[macruby-changes] [2108] MacRuby/branches/experimental
source_changes at macosforge.org
source_changes at macosforge.org
Tue Jul 28 22:11:28 PDT 2009
Revision: 2108
http://trac.macosforge.org/projects/ruby/changeset/2108
Author: lsansonetti at apple.com
Date: 2009-07-28 22:11:26 -0700 (Tue, 28 Jul 2009)
Log Message:
-----------
better fix than last one
Modified Paths:
--------------
MacRuby/branches/experimental/compiler.cpp
MacRuby/branches/experimental/compiler.h
Modified: MacRuby/branches/experimental/compiler.cpp
===================================================================
--- MacRuby/branches/experimental/compiler.cpp 2009-07-29 02:35:18 UTC (rev 2107)
+++ MacRuby/branches/experimental/compiler.cpp 2009-07-29 05:11:26 UTC (rev 2108)
@@ -49,6 +49,7 @@
current_var_uses = NULL;
running_block = NULL;
current_block = false;
+ current_block_chain = false;
current_block_node = NULL;
current_block_func = NULL;
current_opened_class = NULL;
@@ -4125,8 +4126,8 @@
current_mid = mid;
current_instance_method = !singleton_method;
- const bool old_current_block = current_block;
- current_block = false;
+ const bool old_current_block_chain = current_block_chain;
+ current_block_chain = false;
DEBUG_LEVEL_INC();
Value *val = compile_node(body);
@@ -4134,7 +4135,7 @@
Function *new_function = cast<Function>(val);
DEBUG_LEVEL_DEC();
- current_block = old_current_block;
+ current_block_chain = old_current_block_chain;
current_mid = 0;
current_instance_method = false;
@@ -4491,18 +4492,20 @@
NODE *old_current_block_node = current_block_node;
ID old_current_mid = current_mid;
bool old_current_block = current_block;
+ bool old_current_block_chain = current_block_chain;
int old_return_from_block = return_from_block;
BasicBlock *old_rescue_bb = rescue_bb;
current_mid = 0;
current_block = true;
+ current_block_chain = true;
assert(node->nd_body != NULL);
Value *block = compile_node(node->nd_body);
assert(Function::classof(block));
BasicBlock *return_from_block_bb = NULL;
- if (!old_current_block && return_from_block != -1) {
+ if (!old_current_block_chain && return_from_block != -1) {
// The block we just compiled contains one or more
// return expressions! We need to enclose the dispatcher
// call inside an exception handler, since return-from
@@ -4517,6 +4520,7 @@
current_loop_end_bb = old_current_loop_end_bb;
current_mid = old_current_mid;
current_block = old_current_block;
+ current_block_chain = old_current_block_chain;
current_block_func = cast<Function>(block);
current_block_node = node->nd_body;
Modified: MacRuby/branches/experimental/compiler.h
===================================================================
--- MacRuby/branches/experimental/compiler.h 2009-07-29 02:35:18 UTC (rev 2107)
+++ MacRuby/branches/experimental/compiler.h 2009-07-29 05:11:26 UTC (rev 2108)
@@ -84,6 +84,7 @@
ID self_id;
Value *current_self;
bool current_block;
+ bool current_block_chain;
Value *current_var_uses;
Value *running_block;
BasicBlock *begin_bb;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090728/9f84aea3/attachment-0001.html>
More information about the macruby-changes
mailing list