#include "master.hpp" namespace factor { // push a new tuple on the stack, filling its slots with f // Allocates memory void factor_vm::primitive_tuple() { data_root layout(ctx->pop(), this); tagged t(allot(tuple_size(layout.untagged()))); t->layout = layout.value(); memset_cell(t->data(), false_object, tuple_size(layout.untagged()) - sizeof(cell)); ctx->push(t.value()); } // push a new tuple on the stack, filling its slots from the stack // Allocates memory void factor_vm::primitive_tuple_boa() { data_root layout(ctx->pop(), this); tagged t(allot(tuple_size(layout.untagged()))); t->layout = layout.value(); cell size = untag_fixnum(layout.untagged()->size) * sizeof(cell); memcpy(t->data(), (cell*)(ctx->datastack - size + sizeof(cell)), size); ctx->datastack -= size; ctx->push(t.value()); } }