Index: src/runtime/runtime-classes.cc |
diff --git a/src/runtime/runtime-classes.cc b/src/runtime/runtime-classes.cc |
index fe76dfa0dd2564c9787cb9d806084cb74eea4f23..3dbcc65eca6af1e5e5e9a0f80009d18dd8a73640 100644 |
--- a/src/runtime/runtime-classes.cc |
+++ b/src/runtime/runtime-classes.cc |
@@ -200,8 +200,16 @@ |
CONVERT_ARG_HANDLE_CHECKED(Name, name, 1); |
CONVERT_ARG_HANDLE_CHECKED(JSFunction, function, 2); |
- RETURN_FAILURE_ON_EXCEPTION(isolate, JSObject::DefinePropertyOrElement( |
- object, name, function, DONT_ENUM)); |
+ uint32_t index; |
+ if (name->AsArrayIndex(&index)) { |
+ RETURN_FAILURE_ON_EXCEPTION( |
+ isolate, JSObject::SetOwnElementIgnoreAttributes(object, index, |
+ function, DONT_ENUM)); |
+ } else { |
+ RETURN_FAILURE_ON_EXCEPTION( |
+ isolate, JSObject::SetOwnPropertyIgnoreAttributes(object, name, |
+ function, DONT_ENUM)); |
+ } |
return isolate->heap()->undefined_value(); |
} |