@@ -113,10 +113,6 @@ static void php_v8_value_free(zend_object *object) {
113
113
}
114
114
}
115
115
116
- if (!Z_ISUNDEF (php_v8_value->this_ptr )) {
117
- zval_ptr_dtor (&php_v8_value->this_ptr );
118
- }
119
-
120
116
if (php_v8_value->gc_data ) {
121
117
efree (php_v8_value->gc_data );
122
118
}
@@ -270,22 +266,26 @@ zend_class_entry *php_v8_get_class_entry_from_value(v8::Local<v8::Value> value)
270
266
}
271
267
272
268
php_v8_value_t *php_v8_create_value (zval *return_value, v8::Local<v8::Value> local_value, php_v8_isolate_t *php_v8_isolate) {
269
+ zval isolate_zv;
270
+ zval context_zv;
273
271
assert (!local_value.IsEmpty ());
274
272
275
273
object_init_ex (return_value, php_v8_get_class_entry_from_value (local_value));
276
274
PHP_V8_VALUE_FETCH_INTO (return_value, return_php_v8_value);
277
- PHP_V8_VALUE_STORE_ISOLATE (return_value, &php_v8_isolate->this_ptr );
275
+
276
+ ZVAL_OBJ (&isolate_zv, &php_v8_isolate->std );
277
+ PHP_V8_VALUE_STORE_ISOLATE (return_value, &isolate_zv);
278
278
PHP_V8_STORE_POINTER_TO_ISOLATE (return_php_v8_value, php_v8_isolate);
279
279
280
280
if (local_value->IsObject ()) {
281
281
assert (php_v8_isolate->isolate ->InContext ());
282
282
283
283
php_v8_context_t *php_v8_context = php_v8_context_get_reference (local_value.As <v8::Object>()->CreationContext ());
284
284
285
- PHP_V8_OBJECT_STORE_CONTEXT (return_value, &php_v8_context->this_ptr );
285
+ ZVAL_OBJ (&context_zv, &php_v8_context->std );
286
+ PHP_V8_OBJECT_STORE_CONTEXT (return_value, &context_zv);
286
287
PHP_V8_STORE_POINTER_TO_CONTEXT (return_php_v8_value, php_v8_context);
287
288
288
- ZVAL_COPY_VALUE (&return_php_v8_value->this_ptr , return_value);
289
289
php_v8_object_store_self_ptr (return_php_v8_value, v8::Local<v8::Object>::Cast (local_value));
290
290
}
291
291
@@ -303,7 +303,8 @@ php_v8_value_t *php_v8_get_or_create_value(zval *return_value, v8::Local<v8::Val
303
303
php_v8_value_t *data = php_v8_object_get_self_ptr (php_v8_isolate, v8::Local<v8::Object>::Cast (local_value));
304
304
305
305
if (data) {
306
- ZVAL_ZVAL (return_value, &data->this_ptr , 1 , 0 );
306
+ ZVAL_OBJ (return_value, &data->std );
307
+ Z_ADDREF_P (return_value);
307
308
return data;
308
309
}
309
310
}
0 commit comments