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

Commit 98699e8

Browse files
committed
Refactor internal local value fetching
1 parent 13acf33 commit 98699e8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+337
-465
lines changed

src/php_v8_array.cc

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@
2424
zend_class_entry *php_v8_array_class_entry;
2525
#define this_ce php_v8_array_class_entry
2626

27-
v8::Local<v8::Array> php_v8_value_get_array_local(v8::Isolate *isolate, php_v8_value_t *php_v8_value) {
28-
return v8::Local<v8::Array>::Cast(php_v8_value_get_value_local(isolate, php_v8_value));
29-
};
3027

3128
static PHP_METHOD(V8Array, __construct) {
3229
zval rv;
@@ -60,7 +57,7 @@ static PHP_METHOD(V8Array, Length) {
6057
PHP_V8_VALUE_FETCH_WITH_CHECK(getThis(), php_v8_value);
6158
PHP_V8_ENTER_STORED_ISOLATE(php_v8_value);
6259

63-
RETURN_LONG((zend_long) php_v8_value_get_array_local(isolate, php_v8_value)->Length());
60+
RETURN_LONG(static_cast<zend_long >(php_v8_value_get_local_as<v8::Array>(php_v8_value)->Length()));
6461
}
6562

6663

src/php_v8_array.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ extern "C" {
2626

2727
extern zend_class_entry* php_v8_array_class_entry;
2828

29-
extern v8::Local<v8::Array> php_v8_value_get_array_local(v8::Isolate *isolate, php_v8_value_t *php_v8_value);
30-
3129

3230
PHP_MINIT_FUNCTION(php_v8_array);
3331

src/php_v8_boolean.cc

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,6 @@ zend_class_entry *php_v8_boolean_class_entry;
2323
#define this_ce php_v8_boolean_class_entry
2424

2525

26-
v8::Local<v8::Boolean> php_v8_value_get_boolean_local(v8::Isolate *isolate, php_v8_value_t *php_v8_value) {
27-
return v8::Local<v8::Boolean>::Cast(php_v8_value_get_value_local(isolate, php_v8_value));
28-
};
29-
3026
static PHP_METHOD(V8BooleanValue, __construct) {
3127
zval *php_v8_isolate_zv;
3228

@@ -53,8 +49,7 @@ static PHP_METHOD(V8BooleanValue, Value) {
5349
PHP_V8_VALUE_FETCH_WITH_CHECK(getThis(), php_v8_value);
5450
PHP_V8_ENTER_ISOLATE(php_v8_value->php_v8_isolate);
5551

56-
v8::Local<v8::Value> local_value = php_v8_value_get_value_local(isolate, php_v8_value);
57-
v8::Local<v8::Boolean> local_boolean = v8::Local<v8::Boolean>::Cast(local_value);
52+
v8::Local<v8::Boolean> local_boolean = php_v8_value_get_local_as<v8::Boolean>(php_v8_value);
5853

5954
RETVAL_BOOL(static_cast<zend_bool>(local_boolean->Value()));
6055
}

src/php_v8_boolean.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ extern "C" {
2626

2727
extern zend_class_entry* php_v8_boolean_class_entry;
2828

29-
extern v8::Local<v8::Boolean> php_v8_value_get_boolean_local(v8::Isolate *isolate, php_v8_value_t *php_v8_value);
30-
3129

3230
PHP_MINIT_FUNCTION(php_v8_boolean);
3331

src/php_v8_boolean_object.cc

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@
2323
zend_class_entry *php_v8_boolean_object_class_entry;
2424
#define this_ce php_v8_boolean_object_class_entry
2525

26-
v8::Local<v8::BooleanObject> php_v8_value_get_boolean_object_local(v8::Isolate *isolate, php_v8_value_t *php_v8_value) {
27-
return v8::Local<v8::BooleanObject>::Cast(php_v8_value_get_value_local(isolate, php_v8_value));
28-
};
2926

3027
static PHP_METHOD(V8BooleanObject, __construct) {
3128
zval rv;
@@ -56,7 +53,7 @@ static PHP_METHOD(V8BooleanObject, ValueOf) {
5653
PHP_V8_VALUE_FETCH_WITH_CHECK(getThis(), php_v8_value);
5754
PHP_V8_ENTER_STORED_ISOLATE(php_v8_value);
5855

59-
v8::Local<v8::BooleanObject> local_boolean = php_v8_value_get_boolean_object_local(isolate, php_v8_value);
56+
v8::Local<v8::BooleanObject> local_boolean = php_v8_value_get_local_as<v8::BooleanObject>(php_v8_value);
6057

6158
RETURN_BOOL(static_cast<zend_bool>(local_boolean->ValueOf()));
6259
}

src/php_v8_boolean_object.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ extern "C" {
2626

2727
extern zend_class_entry* php_v8_boolean_object_class_entry;
2828

29-
extern v8::Local<v8::BooleanObject> php_v8_value_get_boolean_object_local(v8::Isolate *isolate, php_v8_value_t *php_v8_value);
30-
3129

3230
PHP_MINIT_FUNCTION(php_v8_boolean_object);
3331

src/php_v8_context.cc

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@ zend_class_entry* php_v8_context_class_entry;
2525

2626
static zend_object_handlers php_v8_context_object_handlers;
2727

28-
v8::Local<v8::Context> php_v8_context_get_local(v8::Isolate *isolate, php_v8_context_t *php_v8_context) {
29-
return v8::Local<v8::Context>::New(isolate, *php_v8_context->context);
30-
};
3128

3229
php_v8_context_t * php_v8_context_fetch_object(zend_object *obj) {
3330
return (php_v8_context_t *)((char *)obj - XtOffsetOf(php_v8_context_t, std));
@@ -115,14 +112,14 @@ static PHP_METHOD(V8Context, __construct)
115112
PHP_V8_FETCH_OBJECT_TEMPLATE_WITH_CHECK(php_v8_global_template_zv, php_v8_global_template);
116113
PHP_V8_DATA_ISOLATES_CHECK(php_v8_context, php_v8_global_template);
117114

118-
global_template = php_v8_object_template_get_local(isolate, php_v8_global_template);
115+
global_template = php_v8_object_template_get_local(php_v8_global_template);
119116
}
120117

121118
if (php_v8_global_object_zv && Z_TYPE_P(php_v8_global_object_zv) != IS_NULL) {
122119
PHP_V8_VALUE_FETCH_WITH_CHECK(php_v8_global_object_zv, php_v8_global_object);
123120
PHP_V8_DATA_ISOLATES_CHECK(php_v8_context, php_v8_global_object);
124121

125-
global_object = php_v8_value_get_value_local(isolate, php_v8_global_object);
122+
global_object = php_v8_value_get_local(php_v8_global_object);
126123
}
127124

128125
v8::Local<v8::Context> context = v8::Context::New(isolate, extensions, global_template, global_object);
@@ -171,10 +168,9 @@ static PHP_METHOD(V8Context, DetachGlobal)
171168

172169
PHP_V8_CONTEXT_FETCH_WITH_CHECK(getThis(), php_v8_context);
173170
PHP_V8_ENTER_STORED_ISOLATE(php_v8_context);
171+
PHP_V8_DECLARE_CONTEXT(php_v8_context);
174172

175-
v8::Local<v8::Context> local_context = php_v8_context_get_local(isolate, php_v8_context);
176-
177-
local_context->DetachGlobal();
173+
context->DetachGlobal();
178174
}
179175

180176
static PHP_METHOD(V8Context, SetSecurityToken)
@@ -190,10 +186,11 @@ static PHP_METHOD(V8Context, SetSecurityToken)
190186

191187
PHP_V8_VALUE_FETCH_WITH_CHECK(php_v8_value_zv, php_v8_value);
192188

193-
v8::Local<v8::Context> local_context = php_v8_context_get_local(isolate, php_v8_context);
194-
v8::Local<v8::Value> local_token = php_v8_value_get_value_local(isolate, php_v8_value);
189+
PHP_V8_DECLARE_CONTEXT(php_v8_context);
195190

196-
local_context->SetSecurityToken(local_token);
191+
v8::Local<v8::Value> local_token = php_v8_value_get_local(php_v8_value);
192+
193+
context->SetSecurityToken(local_token);
197194
}
198195

199196
static PHP_METHOD(V8Context, UseDefaultSecurityToken)
@@ -204,10 +201,9 @@ static PHP_METHOD(V8Context, UseDefaultSecurityToken)
204201

205202
PHP_V8_CONTEXT_FETCH_WITH_CHECK(getThis(), php_v8_context);
206203
PHP_V8_ENTER_STORED_ISOLATE(php_v8_context);
204+
PHP_V8_DECLARE_CONTEXT(php_v8_context);
207205

208-
v8::Local<v8::Context> local_context = php_v8_context_get_local(isolate, php_v8_context);
209-
210-
local_context->UseDefaultSecurityToken();
206+
context->UseDefaultSecurityToken();
211207
}
212208

213209
static PHP_METHOD(V8Context, GetSecurityToken)
@@ -221,8 +217,7 @@ static PHP_METHOD(V8Context, GetSecurityToken)
221217
PHP_V8_ENTER_STORED_ISOLATE(php_v8_context);
222218
PHP_V8_ENTER_CONTEXT(php_v8_context);
223219

224-
v8::Local<v8::Context> local_context = php_v8_context_get_local(isolate, php_v8_context);
225-
v8::Local<v8::Value> local_value = local_context->GetSecurityToken();
220+
v8::Local<v8::Value> local_value = context->GetSecurityToken();
226221

227222
php_v8_get_or_create_value(return_value, local_value, php_v8_context->php_v8_isolate);
228223
}
@@ -237,9 +232,9 @@ static PHP_METHOD(V8Context, AllowCodeGenerationFromStrings)
237232

238233
PHP_V8_CONTEXT_FETCH_WITH_CHECK(getThis(), php_v8_context);
239234
PHP_V8_ENTER_STORED_ISOLATE(php_v8_context);
235+
PHP_V8_DECLARE_CONTEXT(php_v8_context);
240236

241-
v8::Local<v8::Context> local_context = php_v8_context_get_local(isolate, php_v8_context);
242-
local_context->AllowCodeGenerationFromStrings((bool) allow);
237+
context->AllowCodeGenerationFromStrings((bool) allow);
243238
}
244239

245240
static PHP_METHOD(V8Context, IsCodeGenerationFromStringsAllowed)
@@ -250,10 +245,9 @@ static PHP_METHOD(V8Context, IsCodeGenerationFromStringsAllowed)
250245

251246
PHP_V8_CONTEXT_FETCH_WITH_CHECK(getThis(), php_v8_context);
252247
PHP_V8_ENTER_STORED_ISOLATE(php_v8_context);
248+
PHP_V8_DECLARE_CONTEXT(php_v8_context);
253249

254-
v8::Local<v8::Context> local_context = php_v8_context_get_local(isolate, php_v8_context);
255-
256-
RETURN_BOOL(local_context->IsCodeGenerationFromStringsAllowed());
250+
RETURN_BOOL(context->IsCodeGenerationFromStringsAllowed());
257251
}
258252

259253
static PHP_METHOD(V8Context, SetErrorMessageForCodeGenerationFromStrings)
@@ -272,11 +266,9 @@ static PHP_METHOD(V8Context, SetErrorMessageForCodeGenerationFromStrings)
272266
PHP_V8_ENTER_STORED_ISOLATE(php_v8_context);
273267
PHP_V8_ENTER_CONTEXT(php_v8_context);
274268

275-
v8::Local<v8::Context> local_context = php_v8_context_get_local(isolate, php_v8_context);
276-
277-
v8::Local<v8::String> local_string = php_v8_value_get_string_local(isolate, php_v8_string);
269+
v8::Local<v8::String> local_string = php_v8_value_get_local_as<v8::String>(php_v8_string);
278270

279-
local_context->SetErrorMessageForCodeGenerationFromStrings(local_string);
271+
context->SetErrorMessageForCodeGenerationFromStrings(local_string);
280272
}
281273

282274
static PHP_METHOD(V8Context, EstimatedSize)
@@ -290,9 +282,7 @@ static PHP_METHOD(V8Context, EstimatedSize)
290282
PHP_V8_ENTER_STORED_ISOLATE(php_v8_context);
291283
PHP_V8_ENTER_CONTEXT(php_v8_context);
292284

293-
v8::Local<v8::Context> local_context = php_v8_context_get_local(isolate, php_v8_context);
294-
295-
RETURN_LONG(local_context->EstimatedSize());
285+
RETURN_LONG(context->EstimatedSize());
296286
}
297287

298288
ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_context___construct, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)

src/php_v8_context.h

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,9 @@ extern "C" {
2828

2929
extern zend_class_entry *php_v8_context_class_entry;
3030

31-
extern v8::Local<v8::Context> php_v8_context_get_local(v8::Isolate *isolate, php_v8_context_t *php_v8_context);
32-
3331
extern php_v8_context_t *php_v8_context_fetch_object(zend_object *obj);
3432

35-
extern void php_v8_context_store_reference(v8::Isolate *isolate, v8::Local<v8::Context> context,
36-
php_v8_context_t *php_v8_context);
33+
extern void php_v8_context_store_reference(v8::Isolate *isolate, v8::Local<v8::Context> context, php_v8_context_t *php_v8_context);
3734

3835
extern php_v8_context_t *php_v8_context_get_reference(v8::Local<v8::Context> context);
3936

@@ -65,7 +62,7 @@ extern php_v8_context_t *php_v8_context_get_reference(v8::Local<v8::Context> con
6562
v8::Context::Scope context_scope(context);
6663

6764
#define PHP_V8_ENTER_CONTEXT(php_v8_context) \
68-
v8::Local<v8::Context> context = php_v8_context_get_local(isolate, (php_v8_context)); \
65+
PHP_V8_DECLARE_CONTEXT(php_v8_context); \
6966
PHP_V8_CONTEXT_ENTER(context);
7067

7168
#define PHP_V8_ENTER_STORED_CONTEXT(stored) PHP_V8_ENTER_CONTEXT((stored)->php_v8_context);

src/php_v8_date.cc

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@
2323
zend_class_entry *php_v8_date_class_entry;
2424
#define this_ce php_v8_date_class_entry
2525

26-
v8::Local<v8::Date> php_v8_value_get_date_local(v8::Isolate *isolate, php_v8_value_t *php_v8_value) {
27-
return v8::Local<v8::Date>::Cast(php_v8_value_get_value_local(isolate, php_v8_value));
28-
};
2926

3027
static PHP_METHOD(V8Date, __construct) {
3128
zval rv;
@@ -60,23 +57,9 @@ static PHP_METHOD(V8Date, ValueOf) {
6057
PHP_V8_VALUE_FETCH_WITH_CHECK(getThis(), php_v8_value);
6158
PHP_V8_ENTER_STORED_ISOLATE(php_v8_value);
6259

63-
RETURN_DOUBLE(php_v8_value_get_date_local(isolate, php_v8_value)->ValueOf());
60+
RETURN_DOUBLE(php_v8_value_get_local_as<v8::Date>(php_v8_value)->ValueOf());
6461
}
6562

66-
67-
///**
68-
// * Notification that the embedder has changed the time zone,
69-
// * daylight savings time, or other date / time configuration
70-
// * parameters. V8 keeps a cache of various values used for
71-
// * date / time computation. This notification will reset
72-
// * those cached values for the current context so that date /
73-
// * time configuration changes would be reflected in the Date
74-
// * object.
75-
// *
76-
// * This API should not be called more than needed as it will
77-
// * negatively impact the performance of date operations.
78-
// */
79-
//static void DateTimeConfigurationChangeNotification(Isolate* isolate);
8063
static PHP_METHOD(V8Date, DateTimeConfigurationChangeNotification) {
8164
zval *isolate_zv;
8265

src/php_v8_date.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ extern "C" {
2626

2727
extern zend_class_entry* php_v8_date_class_entry;
2828

29-
extern v8::Local<v8::Date> php_v8_value_get_date_local(v8::Isolate *isolate, php_v8_value_t *php_v8_value);
30-
3129

3230
PHP_MINIT_FUNCTION(php_v8_date);
3331

0 commit comments

Comments
 (0)