[macruby-changes] [1375] MacRuby/branches/experimental/roxor.cpp

source_changes at macosforge.org source_changes at macosforge.org
Sun Apr 5 19:07:37 PDT 2009


Revision: 1375
          http://trac.macosforge.org/projects/ruby/changeset/1375
Author:   lsansonetti at apple.com
Date:     2009-04-05 19:07:37 -0700 (Sun, 05 Apr 2009)
Log Message:
-----------
fixed a bug in the way we save/restore blocks from the stack

Modified Paths:
--------------
    MacRuby/branches/experimental/roxor.cpp

Modified: MacRuby/branches/experimental/roxor.cpp
===================================================================
--- MacRuby/branches/experimental/roxor.cpp	2009-04-05 20:20:52 UTC (rev 1374)
+++ MacRuby/branches/experimental/roxor.cpp	2009-04-06 02:07:37 UTC (rev 1375)
@@ -415,8 +415,7 @@
 	std::map<double, struct rb_float_cache *> float_cache;
 	unsigned char method_missing_reason;
 	rb_vm_block_t *current_block;
-	rb_vm_block_t *previous_block; // only used for non-Ruby created blocks
-	bool block_saved; // used by block_given?
+	rb_vm_block_t *previous_block;
 	bool parse_in_eval;
 
 	std::vector<jmp_buf *> return_from_block_jmp_bufs;
@@ -2183,7 +2182,6 @@
 
     current_block = NULL;
     previous_block = NULL;
-    block_saved = false;
     parse_in_eval = false;
 
     load_path = rb_ary_new();
@@ -5664,15 +5662,14 @@
     }
 
     rb_vm_block_t *b = (rb_vm_block_t *)block;
-    rb_vm_block_t *old_b = GET_VM()->current_block;
-    bool old_block_saved = GET_VM()->block_saved;
-    GET_VM()->block_saved = old_b != NULL;
+    rb_vm_block_t *old_b = GET_VM()->previous_block;
+    GET_VM()->previous_block = GET_VM()->current_block;
     GET_VM()->current_block = b;
 
     VALUE retval = __rb_vm_dispatch(cache, self, NULL, sel, opt, argc, argv);
 
-    GET_VM()->current_block = old_b;
-    GET_VM()->block_saved = old_block_saved;
+    GET_VM()->current_block = GET_VM()->previous_block;
+    GET_VM()->previous_block = old_b;
 
     if (!GET_VM()->bindings.empty()) {
 	rb_objc_release(GET_VM()->bindings.back());	
@@ -5972,7 +5969,7 @@
 bool
 rb_vm_block_saved(void)
 {
-    return GET_VM()->block_saved;
+    return GET_VM()->previous_block != NULL ? Qtrue : Qfalse;
 }
 
 extern "C"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090405/11465df7/attachment.html>


More information about the macruby-changes mailing list