diff --git a/vm/code_heap.cpp b/vm/code_heap.cpp index 143f700b50..cfdd3fa093 100644 --- a/vm/code_heap.cpp +++ b/vm/code_heap.cpp @@ -146,14 +146,10 @@ void factor_vm::update_code_heap_words(bool reset_inline_caches) { /* Fix up new words only. Fast path for compilation units that only define new words. */ void factor_vm::initialize_code_blocks() { - std::map::const_iterator iter = - code->uninitialized_blocks.begin(); - std::map::const_iterator end = - code->uninitialized_blocks.end(); - for (; iter != end; iter++) + FACTOR_FOR_EACH(code->uninitialized_blocks) { initialize_code_block(iter->first, iter->second); - + } code->uninitialized_blocks.clear(); } diff --git a/vm/collector.hpp b/vm/collector.hpp index 9a5439c868..2dd360f088 100644 --- a/vm/collector.hpp +++ b/vm/collector.hpp @@ -85,10 +85,7 @@ template struct collector { } void trace_code_heap_roots(std::set* remembered_set) { - std::set::const_iterator iter = remembered_set->begin(); - std::set::const_iterator end = remembered_set->end(); - - for (; iter != end; iter++) { + FACTOR_FOR_EACH(*remembered_set) { code_block* compiled = *iter; visitor.visit_code_block_objects(compiled); visitor.visit_embedded_literals(compiled); diff --git a/vm/compaction.cpp b/vm/compaction.cpp index 9a79e22966..0992830996 100644 --- a/vm/compaction.cpp +++ b/vm/compaction.cpp @@ -143,12 +143,10 @@ template struct code_block_compaction_updater { marked, and also slide the valid roots up so that call sites can be updated correctly in case an inline cache compilation triggered compaction. */ void factor_vm::update_code_roots_for_compaction() { - std::vector::const_iterator iter = code_roots.begin(); - std::vector::const_iterator end = code_roots.end(); mark_bits* state = &code->allocator->state; - for (; iter < end; iter++) { + FACTOR_FOR_EACH(code_roots) { code_root* root = *iter; cell block = root->value & (~data_alignment + 1); diff --git a/vm/contexts.cpp b/vm/contexts.cpp index e829bfd4b2..88d27fb484 100644 --- a/vm/contexts.cpp +++ b/vm/contexts.cpp @@ -79,9 +79,7 @@ void factor_vm::init_contexts(cell datastack_size_, cell retainstack_size_, void factor_vm::delete_contexts() { FACTOR_ASSERT(!ctx); - std::list::const_iterator iter = unused_contexts.begin(); - std::list::const_iterator end = unused_contexts.end(); - while (iter != end) { + FACTOR_FOR_EACH(unused_contexts) { delete *iter; iter++; } diff --git a/vm/full_collector.cpp b/vm/full_collector.cpp index e4d0ca3cb5..f3bc39870a 100644 --- a/vm/full_collector.cpp +++ b/vm/full_collector.cpp @@ -7,12 +7,9 @@ namespace factor { compiler triggers a GC, and the caller block gets GCd as a result, the PIC code won't try to overwrite the call site */ void factor_vm::update_code_roots_for_sweep() { - std::vector::const_iterator iter = code_roots.begin(); - std::vector::const_iterator end = code_roots.end(); - mark_bits* state = &code->allocator->state; - for (; iter < end; iter++) { + FACTOR_FOR_EACH(code_roots) { code_root* root = *iter; cell block = root->value & (~data_alignment - 1); if (root->valid && !state->marked_p(block)) diff --git a/vm/gc.cpp b/vm/gc.cpp index a64464f2df..91be631d90 100644 --- a/vm/gc.cpp +++ b/vm/gc.cpp @@ -239,10 +239,7 @@ void factor_vm::primitive_disable_gc_events() { std::vector* gc_events = this->gc_events; this->gc_events = NULL; - std::vector::const_iterator iter = gc_events->begin(); - std::vector::const_iterator end = gc_events->end(); - - for (; iter != end; iter++) { + FACTOR_FOR_EACH(*gc_events) { gc_event event = *iter; byte_array* obj = byte_array_from_value(&event); result.add(tag(obj)); diff --git a/vm/utilities.hpp b/vm/utilities.hpp index 72f27dbf80..f59053a700 100644 --- a/vm/utilities.hpp +++ b/vm/utilities.hpp @@ -2,8 +2,8 @@ namespace factor { // Poor mans range-based for loops. #define FACTOR_FOR_EACH(iterable) \ - for (typeof(iterable.begin()) iter = iterable.begin(); \ - iter != iterable.end(); \ + for (typeof((iterable).begin()) iter = (iterable).begin(); \ + iter != (iterable).end(); \ iter++) inline static void memset_2(void* dst, uint16_t pattern, size_t size) { diff --git a/vm/vm.cpp b/vm/vm.cpp index bca34d0248..75058e7ec7 100644 --- a/vm/vm.cpp +++ b/vm/vm.cpp @@ -32,11 +32,8 @@ factor_vm::~factor_vm() { delete signal_callstack_seg; signal_callstack_seg = NULL; } - std::list::const_iterator iter = function_descriptors.begin(); - std::list::const_iterator end = function_descriptors.end(); - while (iter != end) { + FACTOR_FOR_EACH(function_descriptors) { delete[] * iter; - iter++; } }