@@ -79,20 +79,18 @@ class CallbackInfo {
79
79
public:
80
80
static inline void Free (char * data, void * hint);
81
81
static inline CallbackInfo* New (Isolate* isolate,
82
- Local<Object > object,
82
+ Local<ArrayBuffer > object,
83
83
FreeCallback callback,
84
84
void * hint = 0 );
85
- inline void Dispose (Isolate* isolate);
86
- inline Persistent<Object>* persistent ();
87
85
private:
88
- static void WeakCallback (const WeakCallbackData<Object , CallbackInfo>&);
89
- inline void WeakCallback (Isolate* isolate, Local<Object > object);
86
+ static void WeakCallback (const WeakCallbackData<ArrayBuffer , CallbackInfo>&);
87
+ inline void WeakCallback (Isolate* isolate, Local<ArrayBuffer > object);
90
88
inline CallbackInfo (Isolate* isolate,
91
- Local<Object > object,
89
+ Local<ArrayBuffer > object,
92
90
FreeCallback callback,
93
91
void * hint);
94
92
~CallbackInfo ();
95
- Persistent<Object > persistent_;
93
+ Persistent<ArrayBuffer > persistent_;
96
94
FreeCallback const callback_;
97
95
void * const hint_;
98
96
DISALLOW_COPY_AND_ASSIGN (CallbackInfo);
@@ -105,30 +103,25 @@ void CallbackInfo::Free(char* data, void*) {
105
103
106
104
107
105
CallbackInfo* CallbackInfo::New (Isolate* isolate,
108
- Local<Object > object,
106
+ Local<ArrayBuffer > object,
109
107
FreeCallback callback,
110
108
void * hint) {
111
109
return new CallbackInfo (isolate, object, callback, hint);
112
110
}
113
111
114
112
115
- void CallbackInfo::Dispose (Isolate* isolate) {
116
- WeakCallback (isolate, PersistentToLocal (isolate, persistent_));
117
- }
118
-
119
-
120
- Persistent<Object>* CallbackInfo::persistent () {
121
- return &persistent_;
122
- }
123
-
124
-
125
113
CallbackInfo::CallbackInfo (Isolate* isolate,
126
- Local<Object > object,
114
+ Local<ArrayBuffer > object,
127
115
FreeCallback callback,
128
116
void * hint)
129
117
: persistent_(isolate, object),
130
118
callback_ (callback),
131
119
hint_(hint) {
120
+ ArrayBuffer::Contents obj_c = object->GetContents ();
121
+ char * const data = static_cast <char *>(obj_c.Data ());
122
+ if (object->ByteLength () != 0 )
123
+ CHECK_NE (data, nullptr );
124
+
132
125
persistent_.SetWeak (this , WeakCallback);
133
126
persistent_.SetWrapperClassId (BUFFER_ID);
134
127
persistent_.MarkIndependent ();
@@ -142,19 +135,14 @@ CallbackInfo::~CallbackInfo() {
142
135
143
136
144
137
void CallbackInfo::WeakCallback (
145
- const WeakCallbackData<Object , CallbackInfo>& data) {
138
+ const WeakCallbackData<ArrayBuffer , CallbackInfo>& data) {
146
139
data.GetParameter ()->WeakCallback (data.GetIsolate (), data.GetValue ());
147
140
}
148
141
149
142
150
- void CallbackInfo::WeakCallback (Isolate* isolate, Local<Object> object) {
151
- CHECK (object->IsArrayBuffer ());
152
- Local<ArrayBuffer> buf = object.As <ArrayBuffer>();
143
+ void CallbackInfo::WeakCallback (Isolate* isolate, Local<ArrayBuffer> buf) {
153
144
ArrayBuffer::Contents obj_c = buf->GetContents ();
154
145
char * const obj_data = static_cast <char *>(obj_c.Data ());
155
- if (buf->ByteLength () != 0 )
156
- CHECK_NE (obj_data, nullptr );
157
-
158
146
buf->Neuter ();
159
147
callback_ (obj_data, hint_);
160
148
int64_t change_in_bytes = -static_cast <int64_t >(sizeof (*this ));
0 commit comments