Chromium Code Reviews| Index: include/v8.h |
| diff --git a/include/v8.h b/include/v8.h |
| index 7dfc9189aa307198416f02c8f804c10d1653adbe..b5c780afc0150e444eb423d5ad5f13ebcba092b1 100644 |
| --- a/include/v8.h |
| +++ b/include/v8.h |
| @@ -2782,16 +2782,16 @@ class ReturnValue { |
| V8_INLINE(void Set(const Persistent<T>& handle)); |
| V8_INLINE(void Set(const Handle<T> handle)); |
| // Fast primitive setters |
| - V8_INLINE(void Set(Isolate* isolate, bool value)); |
| - V8_INLINE(void Set(Isolate* isolate, double i)); |
| - V8_INLINE(void Set(Isolate* isolate, int32_t i)); |
| - V8_INLINE(void Set(Isolate* isolate, uint32_t i)); |
| + V8_INLINE(void Set(bool value)); |
| + V8_INLINE(void Set(double i)); |
| + V8_INLINE(void Set(int32_t i)); |
| + V8_INLINE(void Set(uint32_t i)); |
| // Fast JS primitive setters |
| - V8_INLINE(void SetNull(Isolate* isolate)); |
| - V8_INLINE(void SetUndefined(Isolate* isolate)); |
| + V8_INLINE(void SetNull()); |
| + V8_INLINE(void SetUndefined()); |
| + // Convenience getter for Isolate |
| + V8_INLINE(Isolate* GetIsolate()); |
|
Sven Panne
2013/05/27 11:35:36
Do we really want to expose GetIsolate() or would
|
| private: |
| - V8_INLINE(void SetTrue(Isolate* isolate)); |
| - V8_INLINE(void SetFalse(Isolate* isolate)); |
| internal::Object** value_; |
| }; |
| @@ -2868,8 +2868,8 @@ class PropertyCallbackInfo { |
| static const int kThisIndex = 0; |
| static const int kHolderIndex = -1; |
| static const int kDataIndex = -2; |
| - static const int kIsolateIndex = -3; |
| - static const int kReturnValueIndex = -4; |
| + static const int kReturnValueIndex = -3; |
| + static const int kIsolateIndex = -4; |
| V8_INLINE(PropertyCallbackInfo(internal::Object** args)) |
| : args_(args) { } |
| @@ -5694,61 +5694,58 @@ void ReturnValue<T>::Set(const Handle<T> handle) { |
| } |
| template<typename T> |
| -void ReturnValue<T>::Set(Isolate* isolate, double i) { |
| - Set(Number::New(isolate, i)); |
| +void ReturnValue<T>::Set(double i) { |
| + Set(Number::New(GetIsolate(), i)); |
| } |
| template<typename T> |
| -void ReturnValue<T>::Set(Isolate* isolate, int32_t i) { |
| +void ReturnValue<T>::Set(int32_t i) { |
| typedef internal::Internals I; |
| if (V8_LIKELY(I::IsValidSmi(i))) { |
| *value_ = I::IntToSmi(i); |
| return; |
| } |
| - Set(Integer::New(i, isolate)); |
| + Set(Integer::New(i, GetIsolate())); |
| } |
| template<typename T> |
| -void ReturnValue<T>::Set(Isolate* isolate, uint32_t i) { |
| +void ReturnValue<T>::Set(uint32_t i) { |
| typedef internal::Internals I; |
| if (V8_LIKELY(I::IsValidSmi(i))) { |
| *value_ = I::IntToSmi(i); |
| return; |
| } |
| - Set(Integer::NewFromUnsigned(i, isolate)); |
| + Set(Integer::NewFromUnsigned(i, GetIsolate())); |
| } |
| template<typename T> |
| -void ReturnValue<T>::Set(Isolate* isolate, bool value) { |
| +void ReturnValue<T>::Set(bool value) { |
| + typedef internal::Internals I; |
| + int root_index; |
| if (value) { |
| - SetTrue(isolate); |
| + root_index = I::kTrueValueRootIndex; |
| } else { |
| - SetFalse(isolate); |
| + root_index = I::kFalseValueRootIndex; |
| } |
| + *value_ = *I::GetRoot(GetIsolate(), root_index); |
| } |
| template<typename T> |
| -void ReturnValue<T>::SetTrue(Isolate* isolate) { |
| - typedef internal::Internals I; |
| - *value_ = *I::GetRoot(isolate, I::kTrueValueRootIndex); |
| -} |
| - |
| -template<typename T> |
| -void ReturnValue<T>::SetFalse(Isolate* isolate) { |
| +void ReturnValue<T>::SetNull() { |
| typedef internal::Internals I; |
| - *value_ = *I::GetRoot(isolate, I::kFalseValueRootIndex); |
| + *value_ = *I::GetRoot(GetIsolate(), I::kNullValueRootIndex); |
| } |
| template<typename T> |
| -void ReturnValue<T>::SetNull(Isolate* isolate) { |
| +void ReturnValue<T>::SetUndefined() { |
| typedef internal::Internals I; |
| - *value_ = *I::GetRoot(isolate, I::kNullValueRootIndex); |
| + *value_ = *I::GetRoot(GetIsolate(), I::kUndefinedValueRootIndex); |
| } |
| template<typename T> |
| -void ReturnValue<T>::SetUndefined(Isolate* isolate) { |
| - typedef internal::Internals I; |
| - *value_ = *I::GetRoot(isolate, I::kUndefinedValueRootIndex); |
| +Isolate* ReturnValue<T>::GetIsolate() { |
| + // Isolate is always the pointer below value_ on the stack. |
| + return *reinterpret_cast<Isolate**>(&value_[-1]); |
| } |