| 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)");
|
|
|