Chromium Code Reviews| Index: src/runtime/runtime-classes.cc |
| diff --git a/src/runtime/runtime-classes.cc b/src/runtime/runtime-classes.cc |
| index 20e98efc64eb0ac6cfbc469455adc4599f29421c..19dab991660a8b89a08903abaaf71559f25a6129 100644 |
| --- a/src/runtime/runtime-classes.cc |
| +++ b/src/runtime/runtime-classes.cc |
| @@ -134,8 +134,8 @@ RUNTIME_FUNCTION(Runtime_StoreToSuper_Strict) { |
| DCHECK(args.length() == 4); |
| CONVERT_ARG_HANDLE_CHECKED(Object, receiver, 0); |
| CONVERT_ARG_HANDLE_CHECKED(JSObject, home_object, 1); |
| - CONVERT_ARG_HANDLE_CHECKED(Object, value, 2); |
| - CONVERT_ARG_HANDLE_CHECKED(Name, name, 3); |
| + CONVERT_ARG_HANDLE_CHECKED(Name, name, 2); |
| + CONVERT_ARG_HANDLE_CHECKED(Object, value, 3); |
| return StoreToSuper(isolate, home_object, receiver, name, value, STRICT); |
| } |
| @@ -146,10 +146,48 @@ RUNTIME_FUNCTION(Runtime_StoreToSuper_Sloppy) { |
| DCHECK(args.length() == 4); |
| CONVERT_ARG_HANDLE_CHECKED(Object, receiver, 0); |
| CONVERT_ARG_HANDLE_CHECKED(JSObject, home_object, 1); |
| - CONVERT_ARG_HANDLE_CHECKED(Object, value, 2); |
| - CONVERT_ARG_HANDLE_CHECKED(Name, name, 3); |
| + CONVERT_ARG_HANDLE_CHECKED(Name, name, 2); |
| + CONVERT_ARG_HANDLE_CHECKED(Object, value, 3); |
| return StoreToSuper(isolate, home_object, receiver, name, value, SLOPPY); |
| } |
| + |
| + |
| +static Object* StoreKeyedToSuper(Isolate* isolate, Handle<JSObject> home_object, |
| + Handle<Object> receiver, Handle<Object> key, |
| + Handle<Object> value, StrictMode strict_mode) { |
| + Handle<Name> name; |
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, name, |
| + Runtime::ToName(isolate, key)); |
| + uint32_t index; |
| + if (name->AsArrayIndex(&index)) { |
| + return ThrowUnsupportedSuper(isolate); |
|
arv (Not doing code reviews)
2014/10/07 15:05:38
// TODO(dslomov): Implement
Dmitry Lomov (no reviews)
2014/10/07 15:53:37
Done.
|
| + } |
| + return StoreToSuper(isolate, home_object, receiver, name, value, strict_mode); |
| +} |
| + |
| + |
| +RUNTIME_FUNCTION(Runtime_StoreKeyedToSuper_Strict) { |
| + HandleScope scope(isolate); |
| + DCHECK(args.length() == 4); |
| + CONVERT_ARG_HANDLE_CHECKED(Object, receiver, 0); |
| + CONVERT_ARG_HANDLE_CHECKED(JSObject, home_object, 1); |
| + CONVERT_ARG_HANDLE_CHECKED(Object, key, 2); |
| + CONVERT_ARG_HANDLE_CHECKED(Object, value, 3); |
| + |
| + return StoreKeyedToSuper(isolate, home_object, receiver, key, value, STRICT); |
| +} |
| + |
| + |
| +RUNTIME_FUNCTION(Runtime_StoreKeyedToSuper_Sloppy) { |
| + HandleScope scope(isolate); |
| + DCHECK(args.length() == 4); |
| + CONVERT_ARG_HANDLE_CHECKED(Object, receiver, 0); |
| + CONVERT_ARG_HANDLE_CHECKED(JSObject, home_object, 1); |
| + CONVERT_ARG_HANDLE_CHECKED(Object, key, 2); |
| + CONVERT_ARG_HANDLE_CHECKED(Object, value, 3); |
| + |
| + return StoreKeyedToSuper(isolate, home_object, receiver, key, value, SLOPPY); |
| +} |
| } |
| } // namespace v8::internal |