Index: src/api-arguments.cc |
diff --git a/src/api-arguments.cc b/src/api-arguments.cc |
index fabfd49914413c139ee188dc2fb83d9d694523b7..c4b698c5a2146f872f17cfa6a52029c191dab027 100644 |
--- a/src/api-arguments.cc |
+++ b/src/api-arguments.cc |
@@ -4,82 +4,28 @@ |
#include "src/api-arguments.h" |
-#include "src/api.h" |
-#include "src/vm-state-inl.h" |
- |
namespace v8 { |
namespace internal { |
-template <typename T> |
-template <typename V> |
-v8::Local<V> CustomArguments<T>::GetReturnValue(Isolate* isolate) { |
- // Check the ReturnValue. |
- Object** handle = &this->begin()[kReturnValueOffset]; |
- // Nothing was set, return empty handle as per previous behaviour. |
- if ((*handle)->IsTheHole()) return v8::Local<V>(); |
- return Utils::Convert<Object, V>(Handle<Object>(handle)); |
-} |
- |
-v8::Local<v8::Value> FunctionCallbackArguments::Call(FunctionCallback f) { |
+Handle<Object> FunctionCallbackArguments::Call(FunctionCallback f) { |
Isolate* isolate = this->isolate(); |
VMState<EXTERNAL> state(isolate); |
ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f)); |
FunctionCallbackInfo<v8::Value> info(begin(), argv_, argc_, |
is_construct_call_); |
f(info); |
- return GetReturnValue<v8::Value>(isolate); |
+ return GetReturnValue<Object>(isolate); |
} |
-#define WRITE_CALL_0(Function, ReturnValue) \ |
- v8::Local<ReturnValue> PropertyCallbackArguments::Call(Function f) { \ |
- Isolate* isolate = this->isolate(); \ |
- VMState<EXTERNAL> state(isolate); \ |
- ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f)); \ |
- PropertyCallbackInfo<ReturnValue> info(begin()); \ |
- f(info); \ |
- return GetReturnValue<ReturnValue>(isolate); \ |
- } |
- |
-#define WRITE_CALL_1(Function, ReturnValue, Arg1) \ |
- v8::Local<ReturnValue> PropertyCallbackArguments::Call(Function f, \ |
- Arg1 arg1) { \ |
- Isolate* isolate = this->isolate(); \ |
- VMState<EXTERNAL> state(isolate); \ |
- ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f)); \ |
- PropertyCallbackInfo<ReturnValue> info(begin()); \ |
- f(arg1, info); \ |
- return GetReturnValue<ReturnValue>(isolate); \ |
- } |
- |
-#define WRITE_CALL_2(Function, ReturnValue, Arg1, Arg2) \ |
- v8::Local<ReturnValue> PropertyCallbackArguments::Call( \ |
- Function f, Arg1 arg1, Arg2 arg2) { \ |
- Isolate* isolate = this->isolate(); \ |
- VMState<EXTERNAL> state(isolate); \ |
- ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f)); \ |
- PropertyCallbackInfo<ReturnValue> info(begin()); \ |
- f(arg1, arg2, info); \ |
- return GetReturnValue<ReturnValue>(isolate); \ |
- } |
- |
-#define WRITE_CALL_2_VOID(Function, ReturnValue, Arg1, Arg2) \ |
- void PropertyCallbackArguments::Call(Function f, Arg1 arg1, Arg2 arg2) { \ |
- Isolate* isolate = this->isolate(); \ |
- VMState<EXTERNAL> state(isolate); \ |
- ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f)); \ |
- PropertyCallbackInfo<ReturnValue> info(begin()); \ |
- f(arg1, arg2, info); \ |
- } |
- |
-FOR_EACH_CALLBACK_TABLE_MAPPING_0(WRITE_CALL_0) |
-FOR_EACH_CALLBACK_TABLE_MAPPING_1(WRITE_CALL_1) |
-FOR_EACH_CALLBACK_TABLE_MAPPING_2(WRITE_CALL_2) |
-FOR_EACH_CALLBACK_TABLE_MAPPING_2_VOID_RETURN(WRITE_CALL_2_VOID) |
- |
-#undef WRITE_CALL_0 |
-#undef WRITE_CALL_1 |
-#undef WRITE_CALL_2 |
-#undef WRITE_CALL_2_VOID |
+Handle<JSObject> PropertyCallbackArguments::Call( |
+ IndexedPropertyEnumeratorCallback f) { |
+ Isolate* isolate = this->isolate(); |
+ VMState<EXTERNAL> state(isolate); |
+ ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f)); |
+ PropertyCallbackInfo<v8::Array> info(begin()); |
+ f(info); |
+ return GetReturnValue<JSObject>(isolate); |
+} |
} // namespace internal |
} // namespace v8 |