| Index: src/api-arguments.cc
|
| diff --git a/src/api-arguments.cc b/src/api-arguments.cc
|
| index f8d6c8fcc3ddda3ee8d83e5419be4b7127ff8f8a..2dd97004a8992b3a294e15941e9330f24bd3eae7 100644
|
| --- a/src/api-arguments.cc
|
| +++ b/src/api-arguments.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "src/api-arguments.h"
|
|
|
| +#include "src/debug/debug.h"
|
| #include "src/tracing/trace-event.h"
|
| #include "src/vm-state-inl.h"
|
|
|
| @@ -12,6 +13,10 @@ namespace internal {
|
|
|
| Handle<Object> FunctionCallbackArguments::Call(FunctionCallback f) {
|
| Isolate* isolate = this->isolate();
|
| + if (isolate->needs_side_effect_check() &&
|
| + !isolate->debug()->PerformSideEffectCheckForCallback(FUNCTION_ADDR(f))) {
|
| + return Handle<Object>();
|
| + }
|
| RuntimeCallTimerScope timer(isolate, &RuntimeCallStats::FunctionCallback);
|
| VMState<EXTERNAL> state(isolate);
|
| ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f));
|
| @@ -23,6 +28,10 @@ Handle<Object> FunctionCallbackArguments::Call(FunctionCallback f) {
|
| Handle<JSObject> PropertyCallbackArguments::Call(
|
| IndexedPropertyEnumeratorCallback f) {
|
| Isolate* isolate = this->isolate();
|
| + if (isolate->needs_side_effect_check() &&
|
| + !isolate->debug()->PerformSideEffectCheckForCallback(FUNCTION_ADDR(f))) {
|
| + return Handle<JSObject>();
|
| + }
|
| RuntimeCallTimerScope timer(isolate, &RuntimeCallStats::PropertyCallback);
|
| VMState<EXTERNAL> state(isolate);
|
| ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f));
|
| @@ -31,5 +40,10 @@ Handle<JSObject> PropertyCallbackArguments::Call(
|
| return GetReturnValue<JSObject>(isolate);
|
| }
|
|
|
| +bool PropertyCallbackArguments::PerformSideEffectCheck(Isolate* isolate,
|
| + Address function) {
|
| + return isolate->debug()->PerformSideEffectCheckForCallback(function);
|
| +}
|
| +
|
| } // namespace internal
|
| } // namespace v8
|
|
|