[macruby-changes] [2819] MacRuby/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Thu Oct 15 16:51:16 PDT 2009
Revision: 2819
http://trac.macosforge.org/projects/ruby/changeset/2819
Author: lsansonetti at apple.com
Date: 2009-10-15 16:51:16 -0700 (Thu, 15 Oct 2009)
Log Message:
-----------
a binding created from a method with a block passed by now has a reference to the block and uses it during evaluation
Modified Paths:
--------------
MacRuby/trunk/proc.c
MacRuby/trunk/vm.cpp
MacRuby/trunk/vm.h
Modified: MacRuby/trunk/proc.c
===================================================================
--- MacRuby/trunk/proc.c 2009-10-15 23:50:21 UTC (rev 2818)
+++ MacRuby/trunk/proc.c 2009-10-15 23:51:16 UTC (rev 2819)
@@ -1391,6 +1391,7 @@
rb_vm_binding_t *binding = (rb_vm_binding_t *)xmalloc(
sizeof(rb_vm_binding_t));
+ binding->block = NULL;
GC_WB(&binding->self, block->self);
GC_WB(&binding->locals, block->locals);
Modified: MacRuby/trunk/vm.cpp
===================================================================
--- MacRuby/trunk/vm.cpp 2009-10-15 23:50:21 UTC (rev 2818)
+++ MacRuby/trunk/vm.cpp 2009-10-15 23:51:16 UTC (rev 2819)
@@ -2562,7 +2562,10 @@
rb_vm_add_binding_lvar_use(binding, current_block, parent_var_uses);
- GET_VM()->push_current_binding(binding);
+ RoxorVM *vm = GET_VM();
+ GC_WB(&binding->block, vm->current_block());
+
+ vm->push_current_binding(binding);
}
extern "C"
@@ -3274,6 +3277,8 @@
RoxorCompiler::shared->set_dynamic_class(true);
}
+ vm->add_current_block(binding != NULL ? binding->block : NULL);
+
struct Finally {
RoxorVM *vm;
bool old_dynamic_class;
@@ -3289,6 +3294,7 @@
RoxorCompiler::shared->set_dynamic_class(old_dynamic_class);
vm->set_current_top_object(old_top_object);
vm->set_current_class(old_class);
+ vm->pop_current_block();
}
} finalizer(vm, old_dynamic_class, old_class, old_top_object);
Modified: MacRuby/trunk/vm.h
===================================================================
--- MacRuby/trunk/vm.h 2009-10-15 23:50:21 UTC (rev 2818)
+++ MacRuby/trunk/vm.h 2009-10-15 23:51:16 UTC (rev 2819)
@@ -53,6 +53,7 @@
typedef struct {
VALUE self;
+ rb_vm_block_t *block;
rb_vm_local_t *locals;
} rb_vm_binding_t;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20091015/366a030d/attachment-0001.html>
More information about the macruby-changes
mailing list