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 |