diff options
Diffstat (limited to 'deps/v8/src/arguments.h')
-rw-r--r-- | deps/v8/src/arguments.h | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/deps/v8/src/arguments.h b/deps/v8/src/arguments.h index c1db98b53..92e57401f 100644 --- a/deps/v8/src/arguments.h +++ b/deps/v8/src/arguments.h @@ -137,7 +137,7 @@ class CustomArgumentsBase : public Relocatable { v->VisitPointers(values_, values_ + kArrayLength); } protected: - inline Object** end() { return values_ + kArrayLength - 1; } + inline Object** begin() { return values_; } explicit inline CustomArgumentsBase(Isolate* isolate) : Relocatable(isolate) {} Object* values_[kArrayLength]; @@ -151,7 +151,7 @@ class CustomArguments : public CustomArgumentsBase<T::kArgsLength> { typedef CustomArgumentsBase<T::kArgsLength> Super; ~CustomArguments() { - this->end()[kReturnValueOffset] = + this->begin()[kReturnValueOffset] = reinterpret_cast<Object*>(kHandleZapValue); } @@ -162,7 +162,7 @@ class CustomArguments : public CustomArgumentsBase<T::kArgsLength> { v8::Handle<V> GetReturnValue(Isolate* isolate); inline Isolate* isolate() { - return reinterpret_cast<Isolate*>(this->end()[T::kIsolateIndex]); + return reinterpret_cast<Isolate*>(this->begin()[T::kIsolateIndex]); } }; @@ -185,7 +185,7 @@ class PropertyCallbackArguments Object* self, JSObject* holder) : Super(isolate) { - Object** values = this->end(); + Object** values = this->begin(); values[T::kThisIndex] = self; values[T::kHolderIndex] = holder; values[T::kDataIndex] = data; @@ -237,6 +237,13 @@ class FunctionCallbackArguments typedef FunctionCallbackInfo<Value> T; typedef CustomArguments<T> Super; static const int kArgsLength = T::kArgsLength; + static const int kHolderIndex = T::kHolderIndex; + static const int kDataIndex = T::kDataIndex; + static const int kReturnValueDefaultValueIndex = + T::kReturnValueDefaultValueIndex; + static const int kIsolateIndex = T::kIsolateIndex; + static const int kCalleeIndex = T::kCalleeIndex; + static const int kContextSaveIndex = T::kContextSaveIndex; FunctionCallbackArguments(internal::Isolate* isolate, internal::Object* data, @@ -249,10 +256,11 @@ class FunctionCallbackArguments argv_(argv), argc_(argc), is_construct_call_(is_construct_call) { - Object** values = end(); + Object** values = begin(); values[T::kDataIndex] = data; values[T::kCalleeIndex] = callee; values[T::kHolderIndex] = holder; + values[T::kContextSaveIndex] = isolate->heap()->the_hole_value(); values[T::kIsolateIndex] = reinterpret_cast<internal::Object*>(isolate); // Here the hole is set as default value. // It cannot escape into js as it's remove in Call below. |