| Index: src/ic/ic.cc
|
| diff --git a/src/ic/ic.cc b/src/ic/ic.cc
|
| index ca0913747426868db813544173d2eb0e87286669..5cbf939c94de15782f07c3910c83e8954fa662fb 100644
|
| --- a/src/ic/ic.cc
|
| +++ b/src/ic/ic.cc
|
| @@ -21,6 +21,7 @@
|
| #include "src/macro-assembler.h"
|
| #include "src/prototype.h"
|
| #include "src/runtime/runtime.h"
|
| +#include "src/runtime/runtime-utils.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
| @@ -1747,7 +1748,8 @@ Handle<Code> StoreIC::CompileHandler(LookupIterator* lookup,
|
| break;
|
| }
|
| NamedStoreHandlerCompiler compiler(isolate(), receiver_map(), holder);
|
| - return compiler.CompileStoreCallback(receiver, lookup->name(), info);
|
| + return compiler.CompileStoreCallback(receiver, lookup->name(), info,
|
| + language_mode());
|
| } else if (accessors->IsAccessorPair()) {
|
| Handle<Object> setter(Handle<AccessorPair>::cast(accessors)->setter(),
|
| isolate());
|
| @@ -2813,6 +2815,7 @@ RUNTIME_FUNCTION(Runtime_StoreCallbackProperty) {
|
| Handle<HeapObject> callback_or_cell = args.at<HeapObject>(2);
|
| Handle<Name> name = args.at<Name>(3);
|
| Handle<Object> value = args.at<Object>(4);
|
| + CONVERT_LANGUAGE_MODE_ARG_CHECKED(language_mode, 5);
|
| HandleScope scope(isolate);
|
|
|
| Handle<AccessorInfo> callback(
|
| @@ -2828,8 +2831,10 @@ RUNTIME_FUNCTION(Runtime_StoreCallbackProperty) {
|
| DCHECK(fun != NULL);
|
|
|
| LOG(isolate, ApiNamedPropertyAccess("store", *receiver, *name));
|
| + Object::ShouldThrow should_throw =
|
| + is_sloppy(language_mode) ? Object::DONT_THROW : Object::THROW_ON_ERROR;
|
| PropertyCallbackArguments custom_args(isolate, callback->data(), *receiver,
|
| - *holder);
|
| + *holder, should_throw);
|
| custom_args.Call(fun, v8::Utils::ToLocal(name), v8::Utils::ToLocal(value));
|
| RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate);
|
| return *value;
|
|
|