Reviewers: Hannes Payer,

Description:
Remove superfluous HInnerAllocatedObject in BuildEmitDeepCopy

[email protected]

Please review this at https://codereview.chromium.org/17881004/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files:
  M src/hydrogen.cc


Index: src/hydrogen.cc
diff --git a/src/hydrogen.cc b/src/hydrogen.cc
index b03bf699389be7864587415c6143280159f27979..d82d6b84329adae37fc5802c667111ecd9fa9abb 100644
--- a/src/hydrogen.cc
+++ b/src/hydrogen.cc
@@ -10022,10 +10022,22 @@ void HOptimizedGraphBuilder::BuildEmitDeepCopy(
   }

   // Copy in-object properties.
-  HValue* object_properties =
- AddInstruction(new(zone) HInnerAllocatedObject(target, object_offset)); - BuildEmitInObjectProperties(boilerplate_object, original_boilerplate_object,
-      object_properties, target, offset, data_target, data_offset);
+  Handle<DescriptorArray> descriptors(
+      boilerplate_object->map()->instance_descriptors());
+ int descriptor_count = boilerplate_object->map()->NumberOfOwnDescriptors();
+  bool has_field = false;
+  for (int i = 0; i < descriptor_count; i++) {
+    PropertyDetails details = descriptors->GetDetails(i);
+    if (details.type() != FIELD) continue;
+    has_field = true;
+  }
+
+  if (has_field) {
+    HValue* object_properties =
+ AddInstruction(new(zone) HInnerAllocatedObject(target, object_offset)); + BuildEmitInObjectProperties(boilerplate_object, original_boilerplate_object,
+        object_properties, target, offset, data_target, data_offset);
+  }

   // Create allocation site info.
   if (mode == TRACK_ALLOCATION_SITE &&


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to