[macruby-changes] [2764] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Thu Oct 8 01:54:25 PDT 2009


Revision: 2764
          http://trac.macosforge.org/projects/ruby/changeset/2764
Author:   lsansonetti at 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;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20091008/d585a085/attachment.html>


More information about the macruby-changes mailing list