diff --git a/vm/tuples.cpp b/vm/tuples.cpp index d7e22bb807..c38832ac0b 100644 --- a/vm/tuples.cpp +++ b/vm/tuples.cpp @@ -4,7 +4,7 @@ namespace factor { /* push a new tuple on the stack */ -tuple *allot_tuple(cell layout_) +tuple *factorvm::allot_tuple(cell layout_) { gc_root layout(layout_); gc_root t(allot(tuple_size(layout.untagged()))); @@ -12,7 +12,12 @@ tuple *allot_tuple(cell layout_) return t.untagged(); } -PRIMITIVE(tuple) +tuple *allot_tuple(cell layout_) +{ + return vm->allot_tuple(layout_); +} + +inline void factorvm::vmprim_tuple() { gc_root layout(dpop()); tuple *t = allot_tuple(layout.value()); @@ -23,8 +28,13 @@ PRIMITIVE(tuple) dpush(tag(t)); } +PRIMITIVE(tuple) +{ + PRIMITIVE_GETVM()->vmprim_tuple(); +} + /* push a new tuple on the stack, filling its slots from the stack */ -PRIMITIVE(tuple_boa) +inline void factorvm::vmprim_tuple_boa() { gc_root layout(dpop()); gc_root t(allot_tuple(layout.value())); @@ -34,4 +44,9 @@ PRIMITIVE(tuple_boa) dpush(t.value()); } +PRIMITIVE(tuple_boa) +{ + PRIMITIVE_GETVM()->vmprim_tuple_boa(); +} + } diff --git a/vm/vm.hpp b/vm/vm.hpp index 8e8d8bb9b8..5ddfd5cd4a 100644 --- a/vm/vm.hpp +++ b/vm/vm.hpp @@ -231,6 +231,11 @@ struct factorvm { inline void vmprim_byte_array(); inline void vmprim_uninitialized_byte_array(); inline void vmprim_resize_byte_array(); + + //tuples + tuple *allot_tuple(cell layout_); + inline void vmprim_tuple(); + inline void vmprim_tuple_boa(); // next method here: