[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