Chromium Code Reviews| Index: include/v8.h |
| diff --git a/include/v8.h b/include/v8.h |
| index 1b1ab19c74d203e45474f0eb3a37242246722994..9827909552b63cdf231f9cd337c588f468f3e0be 100644 |
| --- a/include/v8.h |
| +++ b/include/v8.h |
| @@ -479,11 +479,13 @@ class WeakCallbackInfo { |
| public: |
| typedef void (*Callback)(const WeakCallbackInfo<T>& data); |
| - WeakCallbackInfo(Isolate* isolate, T* parameter, void* internal_field1, |
| - void* internal_field2) |
| - : isolate_(isolate), parameter_(parameter) { |
| - internal_fields_[0] = internal_field1; |
| - internal_fields_[1] = internal_field2; |
| + WeakCallbackInfo(Isolate* isolate, T* parameter, |
| + void* internal_fields[kInternalFieldsInWeakCallback], |
| + Callback* callback) |
| + : isolate_(isolate), parameter_(parameter), callback_(callback) { |
| + for (int i = 0; i < kInternalFieldsInWeakCallback; ++i) { |
| + internal_fields_[i] = internal_fields[i]; |
| + } |
| } |
| V8_INLINE Isolate* GetIsolate() const { return isolate_; } |
| @@ -499,10 +501,17 @@ class WeakCallbackInfo { |
| return internal_fields_[1]; |
| } |
| + bool IsFirstPass() const { return callback_ != nullptr; } |
| + // If needed, set the callback for the second pass, even if it's the same one. |
| + // Setting this to nullptr is unecessary and means there will be no second |
|
Erik Corry
2015/03/26 10:07:10
Comment is a bit confusing. How about:
The defau
dcarney
2015/03/26 10:26:56
Done.
|
| + // pass. Setting this on the second pass will crash. |
| + void SetSecondPassCallback(Callback callback) const { *callback_ = callback; } |
| + |
| private: |
| Isolate* isolate_; |
| T* parameter_; |
| - void* internal_fields_[2]; |
| + Callback* callback_; |
| + void* internal_fields_[kInternalFieldsInWeakCallback]; |
| }; |