]> gitweb.factorcode.org Git - factor.git/commitdiff
VM: merge of clone_object() and primitive_clone()
authorBjörn Lindqvist <bjourne@gmail.com>
Sun, 9 Oct 2016 09:17:30 +0000 (11:17 +0200)
committerBjörn Lindqvist <bjourne@gmail.com>
Wed, 12 Oct 2016 23:34:55 +0000 (01:34 +0200)
vm/objects.cpp
vm/vm.hpp

index 3d38f458725cd4b4476222a8bdcc60c91b519545..1f821cbe39749968b0707c84b9112571174be367 100644 (file)
@@ -45,21 +45,19 @@ void factor_vm::primitive_set_slot() {
 }
 
 // Allocates memory
-cell factor_vm::clone_object(cell obj_) {
-  data_root<object> obj(obj_, this);
+void factor_vm::primitive_clone() {
+
+  data_root<object> obj(ctx->peek(), this);
 
   if (immediate_p(obj.value()))
-    return obj.value();
+    return;
   cell size = object_size(obj.value());
   object* new_obj = allot_object(obj.type(), size);
   memcpy(new_obj, obj.untagged(), size);
   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
 void factor_vm::primitive_size() {
   ctx->replace(from_unsigned_cell(object_size(ctx->peek())));
index 1ff093c28dd10559fba8dc1cc96136d05972e5d1..69b6fe384e59d84724c5aa75589bca8e1a65e2ad 100644 (file)
--- a/vm/vm.hpp
+++ b/vm/vm.hpp
@@ -183,7 +183,6 @@ struct factor_vm {
   void primitive_set_special_object();
   void primitive_identity_hashcode();
   void primitive_compute_identity_hashcode();
-  cell clone_object(cell obj_);
   void primitive_clone();
   void primitive_become();