]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/objects.cpp
io.streams.256color: faster by caching styles
[factor.git] / vm / objects.cpp
index 3d38f458725cd4b4476222a8bdcc60c91b519545..bc858994657333a6aa88aebd31e4bb5e8d847557 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())));
@@ -113,6 +111,7 @@ void factor_vm::primitive_become() {
     each_object(object_become_func);
 
     auto code_block_become_func = [&](code_block* compiled, cell size) {
+      (void)size;
       visitor.visit_code_block_objects(compiled);
       visitor.visit_embedded_literals(compiled);
       code->write_barrier(compiled);