VM: merge of clone_object() and primitive_clone()
parent
8a720c7889
commit
98db13fe9d
|
@ -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())));
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue