@@ -51,11 +51,6 @@ extern void php_v8_create_script_origin(zval *return_value, v8::Local<v8::Contex
51
51
}
52
52
}
53
53
54
- /* v8::SourceMapUrl::Options */
55
- php_v8_create_script_origin_options (&options_zv, origin.Options ());
56
- zend_update_property (this_ce, return_value, ZEND_STRL (" options" ), &options_zv);
57
- zval_ptr_dtor (&options_zv);
58
-
59
54
/* v8::SourceMapUrl::ScriptID */
60
55
if (!origin.ScriptID ().IsEmpty () && origin.ScriptID ()->NumberValue (context).IsJust ()) {
61
56
zend_long script_id = static_cast <zend_long>(origin.ScriptID ()->NumberValue (context).FromJust ());
@@ -69,6 +64,11 @@ extern void php_v8_create_script_origin(zval *return_value, v8::Local<v8::Contex
69
64
PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING (isolate, source_map_url_chars, origin.SourceMapUrl ());
70
65
zend_update_property_string (this_ce, return_value, ZEND_STRL (" source_map_url" ), source_map_url_chars);
71
66
}
67
+
68
+ /* v8::SourceMapUrl::Options */
69
+ php_v8_create_script_origin_options (&options_zv, origin.Options ());
70
+ zend_update_property (this_ce, return_value, ZEND_STRL (" options" ), &options_zv);
71
+ zval_ptr_dtor (&options_zv);
72
72
}
73
73
74
74
@@ -131,15 +131,13 @@ v8::ScriptOrigin *php_v8_create_script_origin_from_zval(zval *value, v8::Isolate
131
131
zval *options_zv = zend_read_property (this_ce, value, ZEND_STRL (" options" ), 0 , &rv); // ScriptOriginOptions
132
132
133
133
if (Z_TYPE_P (options_zv) == IS_OBJECT && instanceof_function (Z_OBJCE_P (options_zv), php_v8_script_origin_options_class_entry)) {
134
- zval *is_shared_cross_origin_zv = zend_read_property (php_v8_script_origin_options_class_entry, options_zv, ZEND_STRL (" is_shared_cross_origin" ), 0 , &rv);
135
- zval *is_opaque_zv = zend_read_property (php_v8_script_origin_options_class_entry, options_zv, ZEND_STRL (" is_opaque" ), 0 , &rv);
136
- zval *is_wasm_zv = zend_read_property (php_v8_script_origin_options_class_entry, options_zv, ZEND_STRL (" is_wasm" ), 0 , &rv);
137
- zval *is_module_zv = zend_read_property (php_v8_script_origin_options_class_entry, options_zv, ZEND_STRL (" is_module" ), 0 , &rv);
138
-
139
- resource_is_shared_cross_origin = v8::Boolean::New (isolate, Z_TYPE_P (is_shared_cross_origin_zv) == IS_TRUE);
140
- resource_is_opaque = v8::Boolean::New (isolate, Z_TYPE_P (is_opaque_zv) == IS_TRUE);
141
- is_wasm = v8::Boolean::New (isolate, Z_TYPE_P (is_wasm_zv) == IS_TRUE);
142
- is_module = v8::Boolean::New (isolate, Z_TYPE_P (is_module_zv) == IS_TRUE);
134
+ zval *tmp = zend_read_property (php_v8_script_origin_options_class_entry, options_zv, ZEND_STRL (" flags" ), 0 , &rv);
135
+ zend_long flags = Z_LVAL_P (tmp);
136
+
137
+ resource_is_shared_cross_origin = v8::Boolean::New (isolate, static_cast <bool >(flags & PHP_V8_SCRIPT_ORIGIN_OPTION_IS_SHARED_CROSS_ORIGIN));
138
+ resource_is_opaque = v8::Boolean::New (isolate, static_cast <bool >(flags & PHP_V8_SCRIPT_ORIGIN_OPTION_IS_OPAQUE));
139
+ is_wasm = v8::Boolean::New (isolate, static_cast <bool >(flags & PHP_V8_SCRIPT_ORIGIN_OPTION_IS_WASM));
140
+ is_module = v8::Boolean::New (isolate, static_cast <bool >(flags & PHP_V8_SCRIPT_ORIGIN_OPTION_IS_MODULE));
143
141
}
144
142
145
143
return new v8::ScriptOrigin (resource_name,
@@ -157,35 +155,20 @@ static PHP_METHOD(ScriptOrigin, __construct) {
157
155
zend_string *resource_name = NULL ;
158
156
zend_long resource_line_offset = -1 ;
159
157
zend_long resource_column_offset = -1 ;
160
- zend_bool resource_is_shared_cross_origin = ' \0 ' ;
161
158
zend_long script_id = -1 ;
162
159
zend_string *source_map_url = NULL ;
163
- zend_bool resource_is_opaque = ' \0 ' ;
164
- zend_bool is_wasm = ' \0 ' ;
165
- zend_bool is_module = ' \0 ' ;
166
160
167
- zval options_zv;
161
+ zval * options_zv = NULL ;
168
162
169
- if (zend_parse_parameters (ZEND_NUM_ARGS (), " |SlllbSbbb " ,
163
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " |SlllSo! " ,
170
164
&resource_name,
171
165
&resource_line_offset,
172
166
&resource_column_offset,
173
167
&script_id,
174
- &resource_is_shared_cross_origin,
175
168
&source_map_url,
176
- &resource_is_opaque,
177
- &is_wasm,
178
- &is_module) == FAILURE) {
169
+ &options_zv) == FAILURE) {
179
170
return ;
180
171
}
181
-
182
- v8::ScriptOriginOptions options (static_cast <bool >(resource_is_shared_cross_origin),
183
- static_cast <bool >(resource_is_opaque),
184
- static_cast <bool >(is_wasm),
185
- static_cast <bool >(is_module));
186
-
187
- php_v8_create_script_origin_options (&options_zv, options);
188
-
189
172
zend_update_property_str (this_ce, getThis (), ZEND_STRL (" resource_name" ), resource_name);
190
173
191
174
if (resource_line_offset > 0 ) {
@@ -199,13 +182,20 @@ static PHP_METHOD(ScriptOrigin, __construct) {
199
182
zend_update_property_long (this_ce, getThis (), ZEND_STRL (" script_id" ), script_id);
200
183
}
201
184
202
- zend_update_property (this_ce, getThis (), ZEND_STRL (" options" ), &options_zv);
203
-
204
- if (source_map_url != NULL ) {
185
+ if (options_zv != NULL ) {
205
186
zend_update_property_str (this_ce, getThis (), ZEND_STRL (" source_map_url" ), source_map_url);
206
187
}
207
188
208
- zval_ptr_dtor (&options_zv);
189
+
190
+ if (NULL != options_zv) {
191
+ zend_update_property (this_ce, getThis (), ZEND_STRL (" options" ), options_zv);
192
+ } else {
193
+ zval tmp;
194
+ v8::ScriptOriginOptions options (0 );
195
+ php_v8_create_script_origin_options (&tmp, options);
196
+ zend_update_property (this_ce, getThis (), ZEND_STRL (" options" ), &tmp);
197
+ zval_ptr_dtor (&tmp);
198
+ }
209
199
}
210
200
211
201
static PHP_METHOD (ScriptOrigin, resourceName) {
@@ -269,14 +259,13 @@ static PHP_METHOD(ScriptOrigin, options) {
269
259
}
270
260
271
261
272
- PHP_V8_ZEND_BEGIN_ARG_WITH_CONSTRUCTOR_INFO_EX (arginfo___construct, 1 )
262
+ PHP_V8_ZEND_BEGIN_ARG_WITH_CONSTRUCTOR_INFO_EX (arginfo___construct, 0 )
273
263
ZEND_ARG_TYPE_INFO(0 , resource_name, IS_STRING, 0 )
274
264
ZEND_ARG_TYPE_INFO(0 , resource_line_offset, IS_LONG, 1 )
275
265
ZEND_ARG_TYPE_INFO(0 , resource_column_offset, IS_LONG, 1 )
276
266
ZEND_ARG_TYPE_INFO(0 , script_id, IS_LONG, 1 )
277
- ZEND_ARG_TYPE_INFO(0 , resource_is_shared_cross_origin, _IS_BOOL, 0 )
278
267
ZEND_ARG_TYPE_INFO(0 , source_map_url, IS_STRING, 0 )
279
- ZEND_ARG_TYPE_INFO (0 , resource_is_opaque, _IS_BOOL, 0 )
268
+ ZEND_ARG_OBJ_INFO (0 , options, V8\\ScriptOriginOptions, 1 )
280
269
ZEND_END_ARG_INFO()
281
270
282
271
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_resourceName, ZEND_RETURN_VALUE, 0 , IS_STRING, 0 )
@@ -319,9 +308,9 @@ PHP_MINIT_FUNCTION (php_v8_script_origin) {
319
308
zend_declare_property_string (this_ce, ZEND_STRL (" resource_name" ), " " , ZEND_ACC_PRIVATE);
320
309
zend_declare_property_null (this_ce, ZEND_STRL (" resource_line_offset" ), ZEND_ACC_PRIVATE);
321
310
zend_declare_property_null (this_ce, ZEND_STRL (" resource_column_offset" ), ZEND_ACC_PRIVATE);
322
- zend_declare_property_null (this_ce, ZEND_STRL (" options" ), ZEND_ACC_PRIVATE);
323
311
zend_declare_property_null (this_ce, ZEND_STRL (" script_id" ), ZEND_ACC_PRIVATE);
324
312
zend_declare_property_string (this_ce, ZEND_STRL (" source_map_url" ), " " , ZEND_ACC_PRIVATE);
313
+ zend_declare_property_null (this_ce, ZEND_STRL (" options" ), ZEND_ACC_PRIVATE);
325
314
326
315
return SUCCESS;
327
316
}
0 commit comments