@@ -34,6 +34,23 @@ php_v8_script_t * php_v8_script_fetch_object(zend_object *obj) {
3434 return (php_v8_script_t *)((char *)obj - XtOffsetOf (php_v8_script_t , std));
3535}
3636
37+ php_v8_script_t *php_v8_create_script (zval *return_value, v8::Local<v8::Script> local_script, php_v8_context_t *php_v8_context) {
38+ assert (!local_script.IsEmpty ());
39+
40+ PHP_V8_DECLARE_ISOLATE (php_v8_context->php_v8_isolate );
41+
42+ object_init_ex (return_value, this_ce);
43+
44+ PHP_V8_FETCH_SCRIPT_INTO (return_value, php_v8_script);
45+
46+ PHP_V8_STORE_POINTER_TO_ISOLATE (php_v8_script, php_v8_context->php_v8_isolate );
47+ PHP_V8_STORE_POINTER_TO_CONTEXT (php_v8_script, php_v8_context);
48+
49+ php_v8_script->persistent ->Reset (isolate, local_script);
50+
51+ return php_v8_script;
52+ }
53+
3754static void php_v8_script_free (zend_object *object)
3855{
3956 php_v8_script_t *php_v8_script = php_v8_script_fetch_object (object);
@@ -92,28 +109,16 @@ static PHP_METHOD(V8Script, __construct)
92109 PHP_V8_SCRIPT_STORE_CONTEXT (getThis (), php_v8_context_zv);
93110 PHP_V8_SCRIPT_STORE_ISOLATE (getThis (), PHP_V8_CONTEXT_READ_ISOLATE (php_v8_context_zv));
94111
95- zend_update_property (this_ce, getThis (), ZEND_STRL (" source" ), php_v8_string_zv);
96-
97112 PHP_V8_ENTER_STORED_ISOLATE (php_v8_script);
98113 PHP_V8_ENTER_STORED_CONTEXT (php_v8_script);
99114
100- if (php_v8_origin_zv == NULL ) {
101- origin = new v8::ScriptOrigin (v8::Undefined (isolate));
102-
103- zval origin_zv;
104- php_v8_create_script_origin (&origin_zv, context, *origin);
105- zend_update_property (this_ce, getThis (), ZEND_STRL (" origin" ), &origin_zv);
106-
107- zval_ptr_dtor (&origin_zv);
108- } else {
115+ if (php_v8_origin_zv != NULL ) {
109116 origin = php_v8_create_script_origin_from_zval (php_v8_origin_zv, isolate);
110117
111118 if (!origin) {
112119 /* exception was already thrown, here we just silently exit */
113120 return ;
114121 }
115-
116- zend_update_property (this_ce, getThis (), ZEND_STRL (" origin" ), php_v8_origin_zv);
117122 }
118123
119124 v8::Local<v8::String> local_source = php_v8_value_get_string_local (isolate, php_v8_string);
@@ -157,32 +162,6 @@ static PHP_METHOD(V8Script, GetContext)
157162 RETVAL_ZVAL (PHP_V8_SCRIPT_READ_CONTEXT (getThis ()), 1 , 0 );
158163}
159164
160- static PHP_METHOD (V8Script, getSource)
161- {
162- zval rv;
163-
164- if (zend_parse_parameters_none () == FAILURE) {
165- return ;
166- }
167-
168- PHP_V8_FETCH_SCRIPT_WITH_CHECK (getThis (), php_v8_script);
169-
170- RETURN_ZVAL (zend_read_property (this_ce, getThis (), ZEND_STRL (" source" ), 0 , &rv), 1 , 0 );
171- }
172-
173- static PHP_METHOD (V8Script, getOrigin)
174- {
175- zval rv;
176-
177- if (zend_parse_parameters_none () == FAILURE) {
178- return ;
179- }
180-
181- PHP_V8_FETCH_SCRIPT_WITH_CHECK (getThis (), php_v8_script);
182-
183- RETURN_ZVAL (zend_read_property (this_ce, getThis (), ZEND_STRL (" origin" ), 0 , &rv), 1 , 0 );
184- }
185-
186165static PHP_METHOD (V8Script, Run)
187166{
188167 zval *php_v8_context_zv;
@@ -227,13 +206,7 @@ ZEND_END_ARG_INFO()
227206PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_script_GetContext, ZEND_RETURN_VALUE, 0 , V8\\Context, 0 )
228207ZEND_END_ARG_INFO()
229208
230- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_script_getSource, ZEND_RETURN_VALUE, 0 , V8\\StringValue, 0 )
231- ZEND_END_ARG_INFO()
232-
233- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_script_getOrigin, ZEND_RETURN_VALUE, 0 , V8\\ScriptOrigin, 0 )
234- ZEND_END_ARG_INFO()
235-
236- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_script_Run, ZEND_RETURN_VALUE, 0 , V8\\Value, 1 )
209+ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_script_Run, ZEND_RETURN_VALUE, 1 , V8\\Value, 0 )
237210 ZEND_ARG_OBJ_INFO(0 , context, V8\\Context, 0 )
238211ZEND_END_ARG_INFO()
239212
@@ -242,8 +215,6 @@ static const zend_function_entry php_v8_script_methods[] = {
242215 PHP_ME (V8Script, __construct, arginfo_v8_script___construct, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
243216 PHP_ME (V8Script, GetIsolate, arginfo_v8_script_GetIsolate, ZEND_ACC_PUBLIC)
244217 PHP_ME (V8Script, GetContext, arginfo_v8_script_GetContext, ZEND_ACC_PUBLIC)
245- PHP_ME (V8Script, getSource, arginfo_v8_script_getSource, ZEND_ACC_PUBLIC)
246- PHP_ME (V8Script, getOrigin, arginfo_v8_script_getOrigin, ZEND_ACC_PUBLIC)
247218
248219 PHP_ME (V8Script, Run, arginfo_v8_script_Run, ZEND_ACC_PUBLIC)
249220
@@ -261,8 +232,6 @@ PHP_MINIT_FUNCTION(php_v8_script)
261232
262233 zend_declare_property_null (this_ce, ZEND_STRL (" isolate" ), ZEND_ACC_PRIVATE);
263234 zend_declare_property_null (this_ce, ZEND_STRL (" context" ), ZEND_ACC_PRIVATE);
264- zend_declare_property_null (this_ce, ZEND_STRL (" source" ), ZEND_ACC_PRIVATE);
265- zend_declare_property_null (this_ce, ZEND_STRL (" origin" ), ZEND_ACC_PRIVATE);
266235
267236 memcpy (&php_v8_script_object_handlers, zend_get_std_object_handlers (), sizeof (zend_object_handlers));
268237
0 commit comments