| Index: src/runtime.cc
|
| diff --git a/src/runtime.cc b/src/runtime.cc
|
| index 6b7a446c5c962891345f8ba32ef13bc8ce4332a7..29284106fbed22fd475ae92873fd9ca3e2ff82c1 100644
|
| --- a/src/runtime.cc
|
| +++ b/src/runtime.cc
|
| @@ -5275,7 +5275,9 @@ RUNTIME_FUNCTION(Runtime_DefineOrRedefineDataProperty) {
|
| Handle<Object> result;
|
| ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| isolate, result,
|
| - Runtime::ForceSetObjectProperty(js_object, name, obj_value, attr));
|
| + Runtime::ForceSetObjectProperty(
|
| + js_object, name, obj_value, attr,
|
| + JSReceiver::CERTAINLY_NOT_STORE_FROM_KEYED));
|
| return *result;
|
| }
|
|
|
| @@ -5387,10 +5389,12 @@ MaybeHandle<Object> Runtime::SetObjectProperty(Isolate* isolate,
|
| }
|
|
|
|
|
| -MaybeHandle<Object> Runtime::ForceSetObjectProperty(Handle<JSObject> js_object,
|
| - Handle<Object> key,
|
| - Handle<Object> value,
|
| - PropertyAttributes attr) {
|
| +MaybeHandle<Object> Runtime::ForceSetObjectProperty(
|
| + Handle<JSObject> js_object,
|
| + Handle<Object> key,
|
| + Handle<Object> value,
|
| + PropertyAttributes attr,
|
| + JSReceiver::StoreFromKeyed store_from_keyed) {
|
| Isolate* isolate = js_object->GetIsolate();
|
| // Check if the given key is an array index.
|
| uint32_t index;
|
| @@ -5418,7 +5422,9 @@ MaybeHandle<Object> Runtime::ForceSetObjectProperty(Handle<JSObject> js_object,
|
| } else {
|
| if (name->IsString()) name = String::Flatten(Handle<String>::cast(name));
|
| return JSObject::SetLocalPropertyIgnoreAttributes(
|
| - js_object, name, value, attr);
|
| + js_object, name, value, attr, Object::OPTIMAL_REPRESENTATION,
|
| + ALLOW_AS_CONSTANT, JSReceiver::PERFORM_EXTENSIBILITY_CHECK,
|
| + store_from_keyed);
|
| }
|
| }
|
|
|
| @@ -5432,8 +5438,10 @@ MaybeHandle<Object> Runtime::ForceSetObjectProperty(Handle<JSObject> js_object,
|
| return JSObject::SetElement(js_object, index, value, attr,
|
| SLOPPY, false, DEFINE_PROPERTY);
|
| } else {
|
| - return JSObject::SetLocalPropertyIgnoreAttributes(js_object, name, value,
|
| - attr);
|
| + return JSObject::SetLocalPropertyIgnoreAttributes(
|
| + js_object, name, value, attr, Object::OPTIMAL_REPRESENTATION,
|
| + ALLOW_AS_CONSTANT, JSReceiver::PERFORM_EXTENSIBILITY_CHECK,
|
| + store_from_keyed);
|
| }
|
| }
|
|
|
|
|