| Index: src/runtime.cc
|
| ===================================================================
|
| --- src/runtime.cc (revision 6710)
|
| +++ src/runtime.cc (working copy)
|
| @@ -3620,7 +3620,12 @@
|
| args.at<Object>(1));
|
| }
|
|
|
| -
|
| +// Implements part of 8.12.9 DefineOwnProperty.
|
| +// There are 3 cases that lead here:
|
| +// Step 4b - define a new accessor property.
|
| +// Steps 9c & 12 - replace an existing data property with an accessor property.
|
| +// Step 12 - update an existing accessor property with an accessor or generic
|
| +// descriptor.
|
| static MaybeObject* Runtime_DefineOrRedefineAccessorProperty(Arguments args) {
|
| ASSERT(args.length() == 5);
|
| HandleScope scope;
|
| @@ -3652,6 +3657,12 @@
|
| return obj->DefineAccessor(name, flag_setter->value() == 0, fun, attr);
|
| }
|
|
|
| +// Implements part of 8.12.9 DefineOwnProperty.
|
| +// There are 3 cases that lead here:
|
| +// Step 4a - define a new data property.
|
| +// Steps 9b & 12 - replace an existing accessor property with a data property.
|
| +// Step 12 - update an existing data property with a data or generic
|
| +// descriptor.
|
| static MaybeObject* Runtime_DefineOrRedefineDataProperty(Arguments args) {
|
| ASSERT(args.length() == 4);
|
| HandleScope scope;
|
| @@ -4304,7 +4315,7 @@
|
|
|
| ASSERT(args.length() == 1);
|
| Handle<Object> object = args.at<Object>(0);
|
| - if (object->IsJSObject()) {
|
| + if (object->IsJSObject() && !object->IsJSGlobalProxy()) {
|
| Handle<JSObject> js_object = Handle<JSObject>::cast(object);
|
| NormalizeProperties(js_object, CLEAR_INOBJECT_PROPERTIES, 0);
|
| }
|
|
|