VM: merge of clone_object() and primitive_clone()

char-rename
Björn Lindqvist 2016-10-09 11:17:30 +02:00
parent 8a720c7889
commit 98db13fe9d
2 changed files with 5 additions and 8 deletions

View File

@ -45,21 +45,19 @@ void factor_vm::primitive_set_slot() {
} }
// Allocates memory // Allocates memory
cell factor_vm::clone_object(cell obj_) { void factor_vm::primitive_clone() {
data_root<object> obj(obj_, this);
data_root<object> obj(ctx->peek(), this);
if (immediate_p(obj.value())) if (immediate_p(obj.value()))
return obj.value(); return;
cell size = object_size(obj.value()); cell size = object_size(obj.value());
object* new_obj = allot_object(obj.type(), size); object* new_obj = allot_object(obj.type(), size);
memcpy(new_obj, obj.untagged(), size); memcpy(new_obj, obj.untagged(), size);
new_obj->set_hashcode(0); new_obj->set_hashcode(0);
return tag_dynamic(new_obj); ctx->replace(tag_dynamic(new_obj));
} }
// Allocates memory
void factor_vm::primitive_clone() { ctx->replace(clone_object(ctx->peek())); }
// Allocates memory // Allocates memory
void factor_vm::primitive_size() { void factor_vm::primitive_size() {
ctx->replace(from_unsigned_cell(object_size(ctx->peek()))); ctx->replace(from_unsigned_cell(object_size(ctx->peek())));

View File

@ -183,7 +183,6 @@ struct factor_vm {
void primitive_set_special_object(); void primitive_set_special_object();
void primitive_identity_hashcode(); void primitive_identity_hashcode();
void primitive_compute_identity_hashcode(); void primitive_compute_identity_hashcode();
cell clone_object(cell obj_);
void primitive_clone(); void primitive_clone();
void primitive_become(); void primitive_become();