Revision: 5243 http://trac.macosforge.org/projects/ruby/changeset/5243 Author: lsansonetti@apple.com Date: 2011-02-23 16:35:50 -0800 (Wed, 23 Feb 2011) Log Message: ----------- merge r5242 from trunk Revision Links: -------------- http://trac.macosforge.org/projects/ruby/changeset/5242 Modified Paths: -------------- MacRuby/branches/0.9/compiler.cpp MacRuby/branches/0.9/vm.cpp Property Changed: ---------------- MacRuby/branches/0.9/ Property changes on: MacRuby/branches/0.9 ___________________________________________________________________ Modified: svn:mergeinfo - /MacRuby/branches/icu:3533-3744 /MacRuby/trunk:5240 + /MacRuby/branches/icu:3533-3744 /MacRuby/trunk:5240,5242 Modified: MacRuby/branches/0.9/compiler.cpp =================================================================== --- MacRuby/branches/0.9/compiler.cpp 2011-02-24 00:33:59 UTC (rev 5242) +++ MacRuby/branches/0.9/compiler.cpp 2011-02-24 00:35:50 UTC (rev 5243) @@ -2091,12 +2091,14 @@ *flags = DEFINE_SUB_OUTER; } if (outer_level != NULL) { - // Count the number of outers minus the current one. + // Count the number of outers. int level = 0; - for (NODE *n = node; n != NULL; n = n->nd_next) { + NODE *n = node; + while (n != NULL && nd_type(n) == NODE_COLON2) { + n = n->nd_head; level++; } - *outer_level = level + 1; + *outer_level = level; } return compile_node(node->nd_head); } @@ -3936,16 +3938,12 @@ = ivars_slots_cache; old_ivars_slots_cache.clear(); - uint64_t old_outer_mask = outer_mask; - if (current_outer_level > 0) { - outer_mask <<= current_outer_level; - for (int i = 0; i < current_outer_level; i++) { - outer_mask |= (1 << i + 1); - } - } - else { - outer_mask <<= 1; - } + // Increase the outer mask. + int old_outer_mask = outer_mask; + outer_mask <<= current_outer_level + 1; + for (int i = 0; i < current_outer_level; i++) { + outer_mask |= (1 << (i + 1)); + } DEBUG_LEVEL_INC(); Value *val = compile_node(body); @@ -4861,6 +4859,9 @@ Function * RoxorCompiler::compile_main_function(NODE *node, bool *can_interpret_p) { + save_compiler_state(); + reset_compiler_state(); + should_interpret = true; can_interpret = false; @@ -4871,7 +4872,7 @@ if (can_interpret_p != NULL) { *can_interpret_p = should_interpret; } - + restore_compiler_state(); return func; } Modified: MacRuby/branches/0.9/vm.cpp =================================================================== --- MacRuby/branches/0.9/vm.cpp 2011-02-24 00:33:59 UTC (rev 5242) +++ MacRuby/branches/0.9/vm.cpp 2011-02-24 00:35:50 UTC (rev 5243) @@ -1244,7 +1244,7 @@ // the given constant in all modules under the given outer. GET_CORE()->lock(); struct rb_vm_outer *o = GET_CORE()->get_outer((Class)outer); - uint64_t n = 0; + unsigned int n = 0; while (o != NULL && o->klass != (Class)rb_cNSObject) { // If the current outer isn't in the mask, it means we can use it // for const lookup. The outer mask is used when performing const
participants (1)
-
source_changes@macosforge.org