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]; |
}; |