• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  // Copyright 2016 the V8 project authors. All rights reserved.
2  // Use of this source code is governed by a BSD-style license that can be
3  // found in the LICENSE file.
4  
5  #include "src/api-arguments.h"
6  
7  #include "src/tracing/trace-event.h"
8  #include "src/vm-state-inl.h"
9  
10  namespace v8 {
11  namespace internal {
12  
Call(FunctionCallback f)13  Handle<Object> FunctionCallbackArguments::Call(FunctionCallback f) {
14    Isolate* isolate = this->isolate();
15    RuntimeCallTimerScope timer(isolate, &RuntimeCallStats::FunctionCallback);
16    VMState<EXTERNAL> state(isolate);
17    ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f));
18    FunctionCallbackInfo<v8::Value> info(begin(), argv_, argc_);
19    f(info);
20    return GetReturnValue<Object>(isolate);
21  }
22  
Call(IndexedPropertyEnumeratorCallback f)23  Handle<JSObject> PropertyCallbackArguments::Call(
24      IndexedPropertyEnumeratorCallback f) {
25    Isolate* isolate = this->isolate();
26    RuntimeCallTimerScope timer(isolate, &RuntimeCallStats::PropertyCallback);
27    VMState<EXTERNAL> state(isolate);
28    ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f));
29    PropertyCallbackInfo<v8::Array> info(begin());
30    f(info);
31    return GetReturnValue<JSObject>(isolate);
32  }
33  
34  }  // namespace internal
35  }  // namespace v8
36