Index: src/profile-generator.cc |
=================================================================== |
--- src/profile-generator.cc (revision 11964) |
+++ src/profile-generator.cc (working copy) |
@@ -2182,16 +2182,31 @@ |
switch (descs->GetType(i)) { |
case FIELD: { |
int index = descs->GetFieldIndex(i); |
+ |
+ String* k = descs->GetKey(i); |
if (index < js_obj->map()->inobject_properties()) { |
- SetPropertyReference( |
- js_obj, entry, |
- descs->GetKey(i), js_obj->InObjectPropertyAt(index), |
- NULL, |
- js_obj->GetInObjectPropertyOffset(index)); |
+ Object* value = js_obj->InObjectPropertyAt(index); |
+ if (k != heap_->hidden_symbol()) { |
+ SetPropertyReference( |
+ js_obj, entry, |
+ k, value, |
+ NULL, |
+ js_obj->GetInObjectPropertyOffset(index)); |
+ } else { |
+ TagObject(value, "(hidden properties)"); |
+ SetInternalReference( |
+ js_obj, entry, |
+ "hidden_properties", value, |
+ js_obj->GetInObjectPropertyOffset(index)); |
+ } |
} else { |
- SetPropertyReference( |
- js_obj, entry, |
- descs->GetKey(i), js_obj->FastPropertyAt(index)); |
+ Object* value = js_obj->FastPropertyAt(index); |
+ if (k != heap_->hidden_symbol()) { |
+ SetPropertyReference(js_obj, entry, k, value); |
+ } else { |
+ TagObject(value, "(hidden properties)"); |
+ SetInternalReference(js_obj, entry, "hidden_properties", value); |
+ } |
} |
break; |
} |
@@ -2237,7 +2252,7 @@ |
Object* value = target->IsJSGlobalPropertyCell() |
? JSGlobalPropertyCell::cast(target)->value() |
: target; |
- if (String::cast(k)->length() > 0) { |
+ if (k != heap_->hidden_symbol()) { |
SetPropertyReference(js_obj, entry, String::cast(k), value); |
} else { |
TagObject(value, "(hidden properties)"); |