cell size,
code_block* owner,
cell addr) {
+ (void)frame_top;
+ (void)size;
data_root<object> executing_quot(owner->owner_quot(), this);
data_root<object> executing(owner->owner, this);
data_root<object> scan(owner->scan(this, addr), this);
header = (header & 0xFFFFFF) | (frame_size << 20);
}
- template <typename Fixup> cell size(Fixup fixup) const { return size(); }
+ template <typename Fixup> cell size(Fixup fixup) const { (void)fixup; return size(); }
cell entry_point() const { return (cell)(this + 1); }
void code_heap::verify_all_blocks_set() {
auto all_blocks_set_verifier = [&](code_block* block, cell size) {
+ (void)block;
+ (void)size;
FACTOR_ASSERT(all_blocks.find((cell)block) != all_blocks.end());
};
allocator->iterate(all_blocks_set_verifier, no_fixup());
void code_heap::initialize_all_blocks_set() {
all_blocks.clear();
auto all_blocks_set_inserter = [&](code_block* block, cell size) {
+ (void)size;
all_blocks.insert((cell)block);
};
allocator->iterate(all_blocks_set_inserter, no_fixup());
// If generic words were redefined, inline caches need to be reset.
void factor_vm::update_code_heap_words(bool reset_inline_caches) {
auto word_updater = [&](code_block* block, cell size) {
+ (void)size;
update_word_references(block, reset_inline_caches);
};
each_code_block(word_updater);
void factor_vm::primitive_strip_stack_traces() {
auto stack_trace_stripper = [](code_block* block, cell size) {
+ (void)size;
block->owner = false_object;
};
each_code_block(stack_trace_stripper);
void factor_vm::primitive_code_blocks() {
std::vector<cell> objects;
auto code_block_accumulator = [&](code_block* block, cell size) {
+ (void)size;
objects.push_back(block->owner);
objects.push_back(block->parameters);
objects.push_back(block->relocation);
// Slide everything in tenured space up, and update data and code heap
// pointers inside objects.
auto compact_object_func = [&](object* old_addr, object* new_addr, cell size) {
+ (void)old_addr;
+ (void)size;
forwarder.visit_slots(new_addr);
forwarder.visit_object_code_block(new_addr);
tenured->starts.record_object_start_offset(new_addr);
auto compact_code_func = [&](code_block* old_addr,
code_block* new_addr,
cell size) {
+ (void)size;
forwarder.visit_code_block_objects(new_addr);
cell old_entry_point = old_addr->entry_point();
forwarder.visit_instruction_operands(new_addr, old_entry_point);
// the code heap. Since the code heap has now been compacted, those
// pointers are invalid and we need to update them.
auto callback_updater = [&](code_block* stub, cell size) {
+ (void)size;
callbacks->update(stub);
};
callbacks->allocator->iterate(callback_updater, no_fixup());
#define CALLSTACK_BOTTOM(ctx) \
(ctx->callstack_seg->end - sizeof(cell) * 5)
-inline static void flush_icache(cell start, cell len) {}
+inline static void flush_icache(cell start, cell len) { (void)start; (void)len; }
// In the instruction sequence:
}
void factor_vm::print_byte_array(ostream& out, byte_array* array, cell nesting) {
+ (void)nesting;
cell length = array->capacity;
cell i;
bool trimmed;
}
template <typename Block> void free_list_allocator<Block>::sweep() {
- auto null_sweep = [](Block* free_block, cell size) { };
+ auto null_sweep = [](Block* free_block, cell size) { (void)free_block; (void)size; };
sweep(null_sweep);
}
visitor.visit_all_roots();
auto start_object_updater = [&](object *obj, cell size) {
+ (void)size;
data->tenured->starts.record_object_start_offset(obj);
visitor.visit_slots(obj);
switch (obj->type()) {
data->tenured->iterate(start_object_updater, fixup);
auto updater = [&](code_block* compiled, cell size) {
+ (void)size;
visitor.visit_code_block_objects(compiled);
cell rel_base = compiled->entry_point() - fixup.code_offset;
visitor.visit_instruction_operands(compiled, rel_base);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow) {
+ (void)hInstance;
+ (void)hPrevInstance;
+ (void)lpCmdLine;
+ (void)nCmdShow;
int argc;
wchar_t** argv = CommandLineToArgvW(GetCommandLine(), &argc);
wmain(argc, argv);
each_object(object_become_func);
auto code_block_become_func = [&](code_block* compiled, cell size) {
+ (void)size;
visitor.visit_code_block_objects(compiled);
visitor.visit_embedded_literals(compiled);
code->write_barrier(compiled);
LONG factor_vm::exception_handler(PEXCEPTION_RECORD e, void* frame, PCONTEXT c,
void* dispatch) {
+ (void)frame;
+ (void)dispatch;
switch (e->ExceptionCode) {
case EXCEPTION_ACCESS_VIOLATION:
set_memory_protection_error(e->ExceptionInformation[1], c->EIP);
// On Unix SIGINT (ctrl-c) automatically interrupts blocking io system
// calls. It doesn't on Windows, so we need to manually send some
// cancellation requests to unblock the thread.
-VOID CALLBACK dummy_cb (ULONG_PTR dwParam) { }
+VOID CALLBACK dummy_cb(ULONG_PTR dwParam) { (void)dwParam; }
// CancelSynchronousIo is not in Windows XP
#if _WIN32_WINNT >= 0x0600
}
}
#else
-static void wake_up_thread(HANDLE thread) {}
+static void wake_up_thread(HANDLE thread) { (void)thread; }
#endif
static BOOL WINAPI ctrl_handler(DWORD dwCtrlType) {
bool skip_p = prolog_p;
auto recorder = [&](cell frame_top, cell size, code_block* owner, cell addr) {
+ (void)frame_top;
+ (void)size;
+ (void)addr;
if (skip_p)
skip_p = false;
else {
}
auto callback_slot_visitor = [&](code_block* stub, cell size) {
+ (void)size;
visit_handle(&stub->owner);
};
parent->callbacks->allocator->iterate(callback_slot_visitor, no_fixup());
// [size]
void operator()(cell frame_top, cell size, code_block* owner, cell addr) {
+ (void)size;
cell return_address = owner->offset(addr);
code_block* compiled =
call_frame_code_block_visitor(Fixup fixup) : fixup(fixup) {}
void operator()(cell frame_top, cell size, code_block* owner, cell addr) {
- code_block* compiled =
+ (void)size;
+ code_block* compiled =
Fixup::translated_code_block_map ? owner : fixup.fixup_code(owner);
cell fixed_addr = compiled->address_for_offset(owner->offset(addr));