Revision: 2764 http://trac.macosforge.org/projects/ruby/changeset/2764 Author: lsansonetti@apple.com Date: 2009-10-08 01:54:21 -0700 (Thu, 08 Oct 2009) Log Message: ----------- revert r2762 which seems to introduce AOT compilation regressions Revision Links: -------------- http://trac.macosforge.org/projects/ruby/changeset/2762 Modified Paths: -------------- MacRuby/trunk/compiler.cpp MacRuby/trunk/compiler.h Modified: MacRuby/trunk/compiler.cpp =================================================================== --- MacRuby/trunk/compiler.cpp 2009-10-08 08:38:52 UTC (rev 2763) +++ MacRuby/trunk/compiler.cpp 2009-10-08 08:54:21 UTC (rev 2764) @@ -58,7 +58,6 @@ return_from_block_ids = 0; ensure_pn = NULL; current_scope = NULL; - class_declaration = false; dispatcherFunc = NULL; fastPlusFunc = NULL; @@ -2986,8 +2985,7 @@ { rb_vm_arity_t arity = rb_vm_node_arity(node); const int nargs = bb == NULL ? 0 : arity.real; - const bool has_dvars = current_block && current_mid == 0 && !class_declaration; - class_declaration = false; + const bool has_dvars = current_block && current_mid == 0; // Get dynamic vars. if (has_dvars && node->nd_tbl != NULL) { @@ -3876,6 +3874,11 @@ NODE *body = node->nd_body; if (body != NULL) { assert(nd_type(body) == NODE_SCOPE); + ID *tbl = body->nd_tbl; + if (tbl != NULL) { + const int args_count = (int)tbl[0]; + compile_lvars(&tbl[args_count + 1]); + } if (body->nd_body != NULL) { Value *old_self = current_self; current_self = classVal; @@ -3886,12 +3889,7 @@ GlobalValue::InternalLinkage, nilVal, ""); bool old_current_module = current_module; - bool old_current_block_chain = current_block_chain; - bool old_dynamic_class = dynamic_class; - current_block_chain = false; - dynamic_class = false; - std::map<ID, Value *> old_ivar_slots_cache = ivar_slots_cache; ivar_slots_cache.clear(); @@ -3901,18 +3899,11 @@ current_module = nd_type(node) == NODE_MODULE; compile_set_current_scope(classVal, publicScope); + bool old_dynamic_class = dynamic_class; + dynamic_class = false; - DEBUG_LEVEL_INC(); - class_declaration = true; - Value *val = compile_node(body); - Function *f = cast<Function>(val); - DEBUG_LEVEL_DEC(); + Value *val = compile_node(body->nd_body); - std::vector<Value *> params; - params.push_back(classVal); - params.push_back(compile_const_pointer(NULL)); - val = compile_protected_call(f, params); - dynamic_class = old_dynamic_class; compile_set_current_scope(classVal, defaultScope); @@ -3922,7 +3913,6 @@ current_self = old_self; current_opened_class = old_class; current_module = old_current_module; - current_block_chain = old_current_block_chain; ivar_slots_cache = old_ivar_slots_cache; Modified: MacRuby/trunk/compiler.h =================================================================== --- MacRuby/trunk/compiler.h 2009-10-08 08:38:52 UTC (rev 2763) +++ MacRuby/trunk/compiler.h 2009-10-08 08:54:21 UTC (rev 2764) @@ -132,7 +132,6 @@ int return_from_block_ids; PHINode *ensure_pn; RoxorScope *current_scope; - bool class_declaration; Function *dispatcherFunc; Function *fastPlusFunc;