Skip to content
This repository was archived by the owner on Mar 29, 2024. It is now read-only.

Commit 13acf33

Browse files
committed
Cache v8 private symbol for php to v8 obj mapping
1 parent 5170737 commit 13acf33

30 files changed

+145
-149
lines changed

src/php_v8_array.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ static PHP_METHOD(V8Array, __construct) {
4747
PHP_V8_THROW_VALUE_EXCEPTION_WHEN_EMPTY(local_array, "Failed to create Array value");
4848

4949
ZVAL_COPY_VALUE(&php_v8_value->this_ptr, getThis());
50-
php_v8_object_store_self_ptr(isolate, local_array, php_v8_value);
50+
php_v8_object_store_self_ptr(php_v8_value, local_array);
5151

5252
php_v8_value->persistent->Reset(isolate, local_array);
5353
}

src/php_v8_boolean_object.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ static PHP_METHOD(V8BooleanObject, __construct) {
4242
v8::Local<v8::BooleanObject> local_bool_obj = v8::BooleanObject::New(isolate, value).As<v8::BooleanObject>();
4343

4444
ZVAL_COPY_VALUE(&php_v8_value->this_ptr, getThis());
45-
php_v8_object_store_self_ptr(isolate, local_bool_obj, php_v8_value);
45+
php_v8_object_store_self_ptr(php_v8_value, local_bool_obj);
4646

4747
php_v8_value->persistent->Reset(isolate, local_bool_obj);
4848
}

src/php_v8_callback_info.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ static PHP_METHOD(V8CallbackInfo, This) {
159159

160160
v8::Local<v8::Object> local_object = v8::Local<v8::Object>::New(isolate, *php_v8_callback_info->this_obj);
161161

162-
php_v8_get_or_create_value(return_value, local_object, isolate);
162+
php_v8_get_or_create_value(return_value, local_object, php_v8_callback_info->php_v8_isolate);
163163
}
164164

165165
static PHP_METHOD(V8CallbackInfo, Holder) {
@@ -174,7 +174,7 @@ static PHP_METHOD(V8CallbackInfo, Holder) {
174174

175175
v8::Local<v8::Object> local_object = v8::Local<v8::Object>::New(isolate, *php_v8_callback_info->holder_obj);
176176

177-
php_v8_get_or_create_value(return_value, local_object, isolate);
177+
php_v8_get_or_create_value(return_value, local_object, php_v8_callback_info->php_v8_isolate);
178178
}
179179

180180
static PHP_METHOD(V8CallbackInfo, GetReturnValue) {

src/php_v8_callbacks.cc

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -310,14 +310,15 @@ void php_v8_callback_function(const v8::FunctionCallbackInfo<v8::Value> &info) {
310310

311311
void php_v8_callback_accessor_name_getter(v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Value> &info) {
312312
PHP_V8_DECLARE_ISOLATE_LOCAL_ALIAS(info.GetIsolate());
313+
php_v8_isolate_t *php_v8_isolate = PHP_V8_ISOLATE_FETCH_REFERENCE(isolate);
313314

314315
zval args;
315316
zval property_name;
316317

317318
/* Build the parameter array */
318319
array_init_size(&args, 2);
319320

320-
php_v8_get_or_create_value(&property_name, property, isolate);
321+
php_v8_get_or_create_value(&property_name, property, php_v8_isolate);
321322
add_index_zval(&args, 0, &property_name);
322323

323324
php_v8_callback_call_from_bucket_with_zargs(0, info, info.GetReturnValue(), &args);
@@ -327,6 +328,7 @@ void php_v8_callback_accessor_name_getter(v8::Local<v8::Name> property, const v8
327328

328329
void php_v8_callback_accessor_name_setter(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const v8::PropertyCallbackInfo<void> &info) {
329330
PHP_V8_DECLARE_ISOLATE_LOCAL_ALIAS(info.GetIsolate());
331+
php_v8_isolate_t *php_v8_isolate = PHP_V8_ISOLATE_FETCH_REFERENCE(isolate);
330332

331333
zval args;
332334
zval property_name;
@@ -335,8 +337,8 @@ void php_v8_callback_accessor_name_setter(v8::Local<v8::Name> property, v8::Loca
335337
/* Build the parameter array */
336338
array_init_size(&args, 3);
337339

338-
php_v8_get_or_create_value(&property_name, property, isolate);
339-
php_v8_get_or_create_value(&property_value, value, isolate);
340+
php_v8_get_or_create_value(&property_name, property, php_v8_isolate);
341+
php_v8_get_or_create_value(&property_value, value, php_v8_isolate);
340342

341343
add_index_zval(&args, 0, &property_name);
342344
add_index_zval(&args, 1, &property_value);
@@ -349,14 +351,15 @@ void php_v8_callback_accessor_name_setter(v8::Local<v8::Name> property, v8::Loca
349351

350352
void php_v8_callback_generic_named_property_getter(v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Value> &info) {
351353
PHP_V8_DECLARE_ISOLATE_LOCAL_ALIAS(info.GetIsolate());
354+
php_v8_isolate_t *php_v8_isolate = PHP_V8_ISOLATE_FETCH_REFERENCE(isolate);
352355

353356
zval args;
354357
zval property_name;
355358

356359
/* Build the parameter array */
357360
array_init_size(&args, 2);
358361

359-
php_v8_get_or_create_value(&property_name, property, isolate);
362+
php_v8_get_or_create_value(&property_name, property, php_v8_isolate);
360363
add_index_zval(&args, 0, &property_name);
361364

362365
php_v8_callback_call_from_bucket_with_zargs(0, info, info.GetReturnValue(), &args);
@@ -366,6 +369,7 @@ void php_v8_callback_generic_named_property_getter(v8::Local<v8::Name> property,
366369

367370
void php_v8_callback_generic_named_property_setter(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const v8::PropertyCallbackInfo<v8::Value> &info) {
368371
PHP_V8_DECLARE_ISOLATE_LOCAL_ALIAS(info.GetIsolate());
372+
php_v8_isolate_t *php_v8_isolate = PHP_V8_ISOLATE_FETCH_REFERENCE(isolate);
369373

370374
zval args;
371375
zval property_name;
@@ -374,8 +378,8 @@ void php_v8_callback_generic_named_property_setter(v8::Local<v8::Name> property,
374378
/* Build the parameter array */
375379
array_init_size(&args, 3);
376380

377-
php_v8_get_or_create_value(&property_name, property, isolate);
378-
php_v8_get_or_create_value(&property_value, value, isolate);
381+
php_v8_get_or_create_value(&property_name, property, php_v8_isolate);
382+
php_v8_get_or_create_value(&property_value, value, php_v8_isolate);
379383

380384
add_index_zval(&args, 0, &property_name);
381385
add_index_zval(&args, 1, &property_value);
@@ -387,14 +391,15 @@ void php_v8_callback_generic_named_property_setter(v8::Local<v8::Name> property,
387391

388392
void php_v8_callback_generic_named_property_query(v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Integer> &info) {
389393
PHP_V8_DECLARE_ISOLATE_LOCAL_ALIAS(info.GetIsolate());
394+
php_v8_isolate_t *php_v8_isolate = PHP_V8_ISOLATE_FETCH_REFERENCE(isolate);
390395

391396
zval args;
392397
zval property_name;
393398

394399
/* Build the parameter array */
395400
array_init_size(&args, 2);
396401

397-
php_v8_get_or_create_value(&property_name, property, isolate);
402+
php_v8_get_or_create_value(&property_name, property, php_v8_isolate);
398403
add_index_zval(&args, 0, &property_name);
399404

400405
php_v8_callback_call_from_bucket_with_zargs(2, info, info.GetReturnValue(), &args);
@@ -404,14 +409,15 @@ void php_v8_callback_generic_named_property_query(v8::Local<v8::Name> property,
404409

405410
void php_v8_callback_generic_named_property_deleter(v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Boolean> &info) {
406411
PHP_V8_DECLARE_ISOLATE_LOCAL_ALIAS(info.GetIsolate());
412+
php_v8_isolate_t *php_v8_isolate = PHP_V8_ISOLATE_FETCH_REFERENCE(isolate);
407413

408414
zval args;
409415
zval property_name;
410416

411417
/* Build the parameter array */
412418
array_init_size(&args, 2);
413419

414-
php_v8_get_or_create_value(&property_name, property, isolate);
420+
php_v8_get_or_create_value(&property_name, property, php_v8_isolate);
415421
add_index_zval(&args, 0, &property_name);
416422

417423
php_v8_callback_call_from_bucket_with_zargs(3, info, info.GetReturnValue(), &args);
@@ -453,6 +459,7 @@ void php_v8_callback_indexed_property_getter(uint32_t index, const v8::PropertyC
453459

454460
void php_v8_callback_indexed_property_setter(uint32_t index, v8::Local<v8::Value> value, const v8::PropertyCallbackInfo<v8::Value> &info) {
455461
PHP_V8_DECLARE_ISOLATE_LOCAL_ALIAS(info.GetIsolate());
462+
php_v8_isolate_t *php_v8_isolate = PHP_V8_ISOLATE_FETCH_REFERENCE(isolate);
456463

457464
zval args;
458465
zval property_name;
@@ -462,7 +469,7 @@ void php_v8_callback_indexed_property_setter(uint32_t index, v8::Local<v8::Value
462469
array_init_size(&args, 3);
463470

464471
ZVAL_LONG(&property_name, index);
465-
php_v8_get_or_create_value(&property_value, value, isolate);
472+
php_v8_get_or_create_value(&property_value, value, php_v8_isolate);
466473

467474
add_index_zval(&args, 0, &property_name);
468475
add_index_zval(&args, 1, &property_value);
@@ -520,11 +527,13 @@ void php_v8_callback_indexed_property_enumerator(const v8::PropertyCallbackInfo<
520527
}
521528

522529
bool php_v8_callback_access_check(v8::Local<v8::Context> accessing_context, v8::Local<v8::Object> accessed_object, v8::Local<v8::Value> data) {
523-
PHP_V8_DECLARE_ISOLATE_LOCAL_ALIAS(v8::Isolate::GetCurrent());
524-
525530
PHP_V8_THROW_EXCEPTION("Broken due to problem (see https://groups.google.com/forum/?fromgroups#!topic/v8-dev/c7LhW2bNabY)");
526531
return false;
527532

533+
PHP_V8_DECLARE_ISOLATE_LOCAL_ALIAS(v8::Isolate::GetCurrent());
534+
php_v8_isolate_t *php_v8_isolate = PHP_V8_ISOLATE_FETCH_REFERENCE(isolate);
535+
536+
528537
zval args;
529538
zval accessed_object_zv;
530539
zval retval;
@@ -539,7 +548,7 @@ bool php_v8_callback_access_check(v8::Local<v8::Context> accessing_context, v8::
539548

540549
assert(NULL != php_v8_context);
541550

542-
php_v8_get_or_create_value(&accessed_object_zv, accessed_object, isolate);
551+
php_v8_get_or_create_value(&accessed_object_zv, accessed_object, php_v8_isolate);
543552

544553
add_index_zval(&args, 0, &php_v8_context->this_ptr);
545554
add_index_zval(&args, 1, &accessed_object_zv);

src/php_v8_context.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ static PHP_METHOD(V8Context, GlobalObject)
160160

161161
v8::Local<v8::Object> local_object = context->Global();
162162

163-
php_v8_get_or_create_value(return_value, local_object, isolate);
163+
php_v8_get_or_create_value(return_value, local_object, php_v8_context->php_v8_isolate);
164164
}
165165

166166
static PHP_METHOD(V8Context, DetachGlobal)
@@ -224,7 +224,7 @@ static PHP_METHOD(V8Context, GetSecurityToken)
224224
v8::Local<v8::Context> local_context = php_v8_context_get_local(isolate, php_v8_context);
225225
v8::Local<v8::Value> local_value = local_context->GetSecurityToken();
226226

227-
php_v8_get_or_create_value(return_value, local_value, isolate);
227+
php_v8_get_or_create_value(return_value, local_value, php_v8_context->php_v8_isolate);
228228
}
229229

230230
static PHP_METHOD(V8Context, AllowCodeGenerationFromStrings)

src/php_v8_date.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ static PHP_METHOD(V8Date, __construct) {
4646
v8::Local<v8::Date> local_date = maybe_local_date.ToLocalChecked().As<v8::Date>();
4747

4848
ZVAL_COPY_VALUE(&php_v8_value->this_ptr, getThis());
49-
php_v8_object_store_self_ptr(isolate, local_date, php_v8_value);
49+
php_v8_object_store_self_ptr(php_v8_value, local_date);
5050

5151
php_v8_value->persistent->Reset(isolate, local_date);
5252
}

src/php_v8_exception.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ static PHP_METHOD(V8Exception, RangeError) {
4646

4747
v8::Local<v8::Value> local_value = v8::Exception::RangeError(message);
4848

49-
php_v8_create_value(return_value, local_value, isolate);
49+
php_v8_create_value(return_value, local_value, php_v8_context->php_v8_isolate);
5050
}
5151

5252
static PHP_METHOD(V8Exception, ReferenceError) {
@@ -69,7 +69,7 @@ static PHP_METHOD(V8Exception, ReferenceError) {
6969

7070
v8::Local<v8::Value> local_value = v8::Exception::ReferenceError(message);
7171

72-
php_v8_create_value(return_value, local_value, isolate);
72+
php_v8_create_value(return_value, local_value, php_v8_context->php_v8_isolate);
7373
}
7474

7575
static PHP_METHOD(V8Exception, SyntaxError) {
@@ -92,7 +92,7 @@ static PHP_METHOD(V8Exception, SyntaxError) {
9292

9393
v8::Local<v8::Value> local_value = v8::Exception::SyntaxError(message);
9494

95-
php_v8_create_value(return_value, local_value, isolate);
95+
php_v8_create_value(return_value, local_value, php_v8_context->php_v8_isolate);
9696
}
9797

9898
static PHP_METHOD(V8Exception, TypeError) {
@@ -114,7 +114,7 @@ static PHP_METHOD(V8Exception, TypeError) {
114114

115115
v8::Local<v8::Value> local_value = v8::Exception::TypeError(message);
116116

117-
php_v8_create_value(return_value, local_value, isolate);
117+
php_v8_create_value(return_value, local_value, php_v8_context->php_v8_isolate);
118118
}
119119

120120
static PHP_METHOD(V8Exception, Error) {
@@ -137,7 +137,7 @@ static PHP_METHOD(V8Exception, Error) {
137137

138138
v8::Local<v8::Value> local_value = v8::Exception::Error(message);
139139

140-
php_v8_create_value(return_value, local_value, isolate);
140+
php_v8_create_value(return_value, local_value, php_v8_context->php_v8_isolate);
141141
}
142142

143143
static PHP_METHOD(V8Exception, CreateMessage) {

src/php_v8_function.cc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ static PHP_METHOD(V8Function, __construct) {
353353
v8::Local<v8::Function> local_function = maybe_local_function.ToLocalChecked();
354354

355355
ZVAL_COPY_VALUE(&php_v8_value->this_ptr, getThis());
356-
php_v8_object_store_self_ptr(isolate, local_function, php_v8_value);
356+
php_v8_object_store_self_ptr(php_v8_value, local_function);
357357

358358
php_v8_value->persistent->Reset(isolate, local_function);
359359
}
@@ -398,7 +398,7 @@ static PHP_METHOD(V8Function, NewInstance) {
398398

399399
v8::Local<v8::Object> local_obj = maybe_local_obj.ToLocalChecked();
400400

401-
php_v8_get_or_create_value(return_value, local_obj, isolate);
401+
php_v8_get_or_create_value(return_value, local_obj, php_v8_value->php_v8_isolate);
402402
}
403403

404404
static PHP_METHOD(V8Function, Call) {
@@ -444,7 +444,7 @@ static PHP_METHOD(V8Function, Call) {
444444

445445
v8::Local<v8::Value> local_res = maybe_local_res.ToLocalChecked();
446446

447-
php_v8_get_or_create_value(return_value, local_res, isolate);
447+
php_v8_get_or_create_value(return_value, local_res, php_v8_value->php_v8_isolate);
448448
}
449449

450450
static PHP_METHOD(V8Function, SetName) {
@@ -480,7 +480,7 @@ static PHP_METHOD(V8Function, GetName) {
480480
v8::Local<v8::Function> local_function = php_v8_value_get_function_local(isolate, php_v8_value);
481481
v8::Local<v8::Value> local_name = local_function->GetName();
482482

483-
php_v8_get_or_create_value(return_value, local_name, isolate);
483+
php_v8_get_or_create_value(return_value, local_name, php_v8_value->php_v8_isolate);
484484
}
485485

486486
static PHP_METHOD(V8Function, GetInferredName) {
@@ -495,7 +495,7 @@ static PHP_METHOD(V8Function, GetInferredName) {
495495
v8::Local<v8::Function> local_function = php_v8_value_get_function_local(isolate, php_v8_value);
496496
v8::Local<v8::Value> local_inferred_name = local_function->GetInferredName();
497497

498-
php_v8_get_or_create_value(return_value, local_inferred_name, isolate);
498+
php_v8_get_or_create_value(return_value, local_inferred_name, php_v8_value->php_v8_isolate);
499499

500500
}
501501

@@ -511,7 +511,7 @@ static PHP_METHOD(V8Function, GetDisplayName) {
511511
v8::Local<v8::Function> local_function = php_v8_value_get_function_local(isolate, php_v8_value);
512512
v8::Local<v8::Value> local_display_name = local_function->GetDisplayName();
513513

514-
php_v8_get_or_create_value(return_value, local_display_name, isolate);
514+
php_v8_get_or_create_value(return_value, local_display_name, php_v8_value->php_v8_isolate);
515515
}
516516

517517
static PHP_METHOD(V8Function, GetScriptLineNumber) {
@@ -569,7 +569,7 @@ static PHP_METHOD(V8Function, GetBoundFunction) {
569569

570570
v8::Local<v8::Value> local_value = local_function->GetBoundFunction();
571571

572-
php_v8_get_or_create_value(return_value, local_value, isolate);
572+
php_v8_get_or_create_value(return_value, local_value, php_v8_value->php_v8_isolate);
573573
}
574574

575575
static PHP_METHOD(V8Function, GetScriptOrigin) {

src/php_v8_function_callback_info.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ static PHP_METHOD(V8FunctionCallbackInfo, Arguments) {
102102

103103
local_value = v8::Local<v8::Value>::New(isolate, *php_v8_callback_info->arguments[i]);
104104

105-
php_v8_get_or_create_value(&arg_zv, local_value, isolate);
105+
php_v8_get_or_create_value(&arg_zv, local_value, php_v8_callback_info->php_v8_isolate);
106106

107107
add_index_zval(&php_v8_callback_info->args, static_cast<zend_ulong>(i), &arg_zv);
108108
}

src/php_v8_function_template.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ static PHP_METHOD(V8FunctionTemplate, GetFunction) {
232232

233233
v8::Local<v8::Function> local_function = maybe_local_function.ToLocalChecked();
234234

235-
php_v8_get_or_create_value(return_value, local_function, isolate);
235+
php_v8_get_or_create_value(return_value, local_function, php_v8_context->php_v8_isolate);
236236
}
237237

238238
static PHP_METHOD(V8FunctionTemplate, SetCallHandler) {

0 commit comments

Comments
 (0)