}
void factor_vm::print_word(ostream& out, word* word, cell nesting) {
- if (tagged<object>(word->vocabulary).type_p(STRING_TYPE))
+ if (TAG(word->vocabulary) == STRING_TYPE)
out << untag<string>(word->vocabulary) << ":";
- if (tagged<object>(word->name).type_p(STRING_TYPE))
+ if (TAG(word->name) == STRING_TYPE)
out << untag<string>(word->name);
else {
out << "#<not a string: ";
}
void factor_vm::print_byte_array(ostream& out, byte_array* array, cell nesting) {
+ (void)nesting;
cell length = array->capacity;
cell i;
bool trimmed;
quotation* quot;
- switch (tagged<object>(obj).type()) {
+ switch (TAG(obj)) {
case FIXNUM_TYPE:
out << untag_fixnum(obj);
break;
print_alien(out, untag<alien>(obj), nesting - 1);
break;
default:
- out << "#<" << type_name(tagged<object>(obj).type()) << " @ ";
+ out << "#<" << type_name(TAG(obj)) << " @ ";
out << (void*)obj << ">";
break;
}
void dump_memory_range(ostream& out, const char* name, cell name_w,
cell start, cell end) {
- out << setw(name_w) << left << name << ": ";
+ out << setw(static_cast<int>(name_w)) << left << name << ": ";
out << "[" << (void*)start << " -> " << (void*)end << "] ";
out << setw(10) << right << (end - start) << " bytes" << endl;
if (scan->free_p())
status = "free";
else {
- reloc_size += parent->object_size(scan->relocation);
- parameter_size += parent->object_size(scan->parameters);
+ reloc_size += object_size(scan->relocation);
+ parameter_size += object_size(scan->parameters);
if (parent->code->allocator->state.marked_p((cell)scan))
status = "marked";
}
};
-/* Dump all code blocks for debugging */
+// Dump all code blocks for debugging
void factor_vm::dump_code_heap(ostream& out) {
code_block_printer printer(this, out);
- code->allocator->iterate(printer);
+ code->allocator->iterate(printer, no_fixup());
out << printer.reloc_size << " bytes used by relocation tables" << endl;
out << printer.parameter_size << " bytes used by parameter tables" << endl;
}
cin >> setw(1024) >> cmd >> setw(0);
if (!cin.good()) {
if (!seen_command) {
- /* If we exit with an EOF immediately, then
- dump stacks. This is useful for builder and
- other cases where Factor is run with stdin
- redirected to /dev/null */
+ // If we exit with an EOF immediately, then
+ // dump stacks. This is useful for builder and
+ // other cases where Factor is run with stdin
+ // redirected to /dev/null
fep_disabled = true;
print_datastack(cout);
ctx->push(addr);
} else if (cmd == "code")
dump_code_heap(cout);
- else if (cmd == "compact-gc")
- primitive_compact_gc();
else if (cmd == "gc")
primitive_full_gc();
else if (cmd == "compact-gc")