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

Commit 78585a3

Browse files
committed
Remove non-standard V8\Scrip::{getSource,getOrigin}, add script builder function
1 parent 596e566 commit 78585a3

10 files changed

+38
-134
lines changed

src/php_v8_script.cc

Lines changed: 19 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
3754
static 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-
186165
static PHP_METHOD(V8Script, Run)
187166
{
188167
zval *php_v8_context_zv;
@@ -227,13 +206,7 @@ ZEND_END_ARG_INFO()
227206
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_script_GetContext, ZEND_RETURN_VALUE, 0, V8\\Context, 0)
228207
ZEND_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)
238211
ZEND_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

src/php_v8_script.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ extern zend_class_entry *php_v8_script_class_entry;
3232

3333
extern v8::Local<v8::Script> php_v8_script_get_local(v8::Isolate *isolate, php_v8_script_t *php_v8_script);
3434
extern php_v8_script_t * php_v8_script_fetch_object(zend_object *obj);
35-
35+
extern php_v8_script_t *php_v8_create_script(zval *return_value, v8::Local<v8::Script> local_script, php_v8_context_t *php_v8_context);
3636

3737
#define PHP_V8_FETCH_SCRIPT(zv) php_v8_script_fetch_object(Z_OBJ_P(zv))
3838
#define PHP_V8_FETCH_SCRIPT_INTO(pzval, into) php_v8_script_t *(into) = PHP_V8_FETCH_SCRIPT((pzval))

stubs/src/Script.php

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,8 @@
1616

1717
class Script
1818
{
19-
private $isolate;
19+
//private $isolate;
2020
private $context;
21-
private $source;
22-
private $origin;
2321

2422
/**
2523
* @param Context $context
@@ -30,40 +28,22 @@ public function __construct(Context $context, StringValue $source, ScriptOrigin
3028
{
3129
// $this->isolate = $context->isolate;
3230
$this->context = $context;
33-
$this->source = $source;
34-
$this->origin = $origin;
3531
}
3632

3733
/**
3834
* @return Isolate
3935
*/
40-
public function GetIsolate() : Isolate
36+
public function GetIsolate(): Isolate
4137
{
4238
}
4339

4440
/**
4541
* @return \V8\Context
4642
*/
47-
public function GetContext() : Context
43+
public function GetContext(): Context
4844
{
4945
}
5046

51-
/**
52-
* @return StringValue
53-
*/
54-
public function getSource() : StringValue
55-
{
56-
return $this->source;
57-
}
58-
59-
/**
60-
* @return ScriptOrigin
61-
*/
62-
public function getOrigin() : ScriptOrigin
63-
{
64-
return $this->origin;
65-
}
66-
6747
/**
6848
* Runs the script returning the resulting value. It will be run in the
6949
* context in which it was created (ScriptCompiler::CompileBound or
@@ -73,12 +53,7 @@ public function getOrigin() : ScriptOrigin
7353
*
7454
* @return BooleanValue|FunctionObject|NumberValue|ObjectValue|StringValue|Value
7555
*/
76-
public function Run(Context $context) : Value
56+
public function Run(Context $context): Value
7757
{
7858
}
79-
80-
/**
81-
* Returns the corresponding context-unbound script.
82-
*/
83-
//Local<UnboundScript> GetUnboundScript();
8459
}

tests/V8Exception_CreateMessage.phpt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,15 @@ Message created from thrown value:
8585
V8\Message->Get(): string(18) "Uncaught #<Object>"
8686
V8\Message->GetSourceLine(): string(24) " test(exception);"
8787
V8\Message->GetScriptOrigin():
88-
object(V8\ScriptOrigin)#22 (6) {
88+
object(V8\ScriptOrigin)#19 (6) {
8989
["resource_name":"V8\ScriptOrigin":private]=>
9090
string(7) "test.js"
9191
["resource_line_offset":"V8\ScriptOrigin":private]=>
9292
int(0)
9393
["resource_column_offset":"V8\ScriptOrigin":private]=>
9494
int(0)
9595
["options":"V8\ScriptOrigin":private]=>
96-
object(V8\ScriptOriginOptions)#18 (4) {
96+
object(V8\ScriptOriginOptions)#15 (4) {
9797
["is_shared_cross_origin":"V8\ScriptOriginOptions":private]=>
9898
bool(false)
9999
["is_opaque":"V8\ScriptOriginOptions":private]=>
@@ -123,15 +123,15 @@ Message created from created value:
123123
V8\Message->Get(): string(13) "Uncaught test"
124124
V8\Message->GetSourceLine(): string(24) " test(exception);"
125125
V8\Message->GetScriptOrigin():
126-
object(V8\ScriptOrigin)#36 (6) {
126+
object(V8\ScriptOrigin)#33 (6) {
127127
["resource_name":"V8\ScriptOrigin":private]=>
128128
string(7) "test.js"
129129
["resource_line_offset":"V8\ScriptOrigin":private]=>
130130
int(0)
131131
["resource_column_offset":"V8\ScriptOrigin":private]=>
132132
int(0)
133133
["options":"V8\ScriptOrigin":private]=>
134-
object(V8\ScriptOriginOptions)#35 (4) {
134+
object(V8\ScriptOriginOptions)#32 (4) {
135135
["is_shared_cross_origin":"V8\ScriptOriginOptions":private]=>
136136
bool(false)
137137
["is_opaque":"V8\ScriptOriginOptions":private]=>

tests/V8Exception_GetStackTrace.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ Stack trace created from thrown value:
112112
V8\StackTrace->getFrames():
113113
array(1) {
114114
[0]=>
115-
object(V8\StackFrame)#20 (8) {
115+
object(V8\StackFrame)#17 (8) {
116116
["line_number":"V8\StackFrame":private]=>
117117
int(5)
118118
["column":"V8\StackFrame":private]=>
@@ -133,7 +133,7 @@ V8\StackTrace->getFrames():
133133
}
134134
V8\StackTrace->GetFrameCount(): int(1)
135135
V8\StackTrace->AsArray():
136-
object(V8\ArrayObject)#18 (2) {
136+
object(V8\ArrayObject)#15 (2) {
137137
["isolate":"V8\Value":private]=>
138138
object(V8\Isolate)#3 (5) {
139139
["snapshot":"V8\Isolate":private]=>

tests/V8FunctionCallbackInfo.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ echo 'We are done for now', PHP_EOL;
8181
Function called
8282
Object representation:
8383
----------------------
84-
object(V8\FunctionCallbackInfo)#13 (0) {
84+
object(V8\FunctionCallbackInfo)#10 (0) {
8585
}
8686

8787

@@ -99,7 +99,7 @@ V8\Exceptions\GenericException: Attempt to use callback info object out of callb
9999

100100
Object representation (outside of context):
101101
-------------------------------------------
102-
object(V8\FunctionCallbackInfo)#13 (0) {
102+
object(V8\FunctionCallbackInfo)#10 (0) {
103103
}
104104

105105

tests/V8FunctionObject.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,15 +176,15 @@ Should output Hello World string
176176
string(11) "Script done"
177177

178178
v8Tests\TrackingDtors\FunctionObject(V8\FunctionObject)->GetScriptOrigin():
179-
object(V8\ScriptOrigin)#133 (6) {
179+
object(V8\ScriptOrigin)#127 (6) {
180180
["resource_name":"V8\ScriptOrigin":private]=>
181181
string(0) ""
182182
["resource_line_offset":"V8\ScriptOrigin":private]=>
183183
int(0)
184184
["resource_column_offset":"V8\ScriptOrigin":private]=>
185185
int(0)
186186
["options":"V8\ScriptOrigin":private]=>
187-
object(V8\ScriptOriginOptions)#134 (4) {
187+
object(V8\ScriptOriginOptions)#131 (4) {
188188
["is_shared_cross_origin":"V8\ScriptOriginOptions":private]=>
189189
bool(false)
190190
["is_opaque":"V8\ScriptOriginOptions":private]=>

tests/V8Isolate_limit_memory.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ object(V8\Isolate)#3 (5) {
9191
["memory_limit_hit":"V8\Isolate":private]=>
9292
bool(true)
9393
}
94-
object(V8\HeapStatistics)#14 (9) {
94+
object(V8\HeapStatistics)#11 (9) {
9595
["total_heap_size":"V8\HeapStatistics":private]=>
9696
float(%d)
9797
["total_heap_size_executable":"V8\HeapStatistics":private]=>

tests/V8ReturnValue_context.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ $helper->space();
7373
--EXPECT--
7474
Object representation:
7575
----------------------
76-
object(V8\ReturnValue)#14 (0) {
76+
object(V8\ReturnValue)#11 (0) {
7777
}
7878

7979

@@ -89,5 +89,5 @@ V8\Exceptions\GenericException: Attempt to use return value out of calling funct
8989

9090
Object representation (outside of context):
9191
-------------------------------------------
92-
object(V8\ReturnValue)#14 (0) {
92+
object(V8\ReturnValue)#11 (0) {
9393
}

tests/V8Script.phpt

Lines changed: 1 addition & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ $helper->space();
4747
$v8_helper->run_checks($res, 'Checkers');
4848
?>
4949
--EXPECT--
50-
object(V8\Script)#7 (4) {
50+
object(V8\Script)#7 (2) {
5151
["isolate":"V8\Script":private]=>
5252
object(V8\Isolate)#3 (5) {
5353
["snapshot":"V8\Isolate":private]=>
@@ -98,46 +98,6 @@ object(V8\Script)#7 (4) {
9898
["global_object":"V8\Context":private]=>
9999
NULL
100100
}
101-
["source":"V8\Script":private]=>
102-
object(V8\StringValue)#8 (1) {
103-
["isolate":"V8\Value":private]=>
104-
object(V8\Isolate)#3 (5) {
105-
["snapshot":"V8\Isolate":private]=>
106-
NULL
107-
["time_limit":"V8\Isolate":private]=>
108-
float(0)
109-
["time_limit_hit":"V8\Isolate":private]=>
110-
bool(false)
111-
["memory_limit":"V8\Isolate":private]=>
112-
int(0)
113-
["memory_limit_hit":"V8\Isolate":private]=>
114-
bool(false)
115-
}
116-
}
117-
["origin":"V8\Script":private]=>
118-
object(V8\ScriptOrigin)#9 (6) {
119-
["resource_name":"V8\ScriptOrigin":private]=>
120-
string(7) "test.js"
121-
["resource_line_offset":"V8\ScriptOrigin":private]=>
122-
int(0)
123-
["resource_column_offset":"V8\ScriptOrigin":private]=>
124-
int(0)
125-
["options":"V8\ScriptOrigin":private]=>
126-
object(V8\ScriptOriginOptions)#10 (4) {
127-
["is_shared_cross_origin":"V8\ScriptOriginOptions":private]=>
128-
bool(false)
129-
["is_opaque":"V8\ScriptOriginOptions":private]=>
130-
bool(false)
131-
["is_wasm":"V8\ScriptOriginOptions":private]=>
132-
bool(false)
133-
["is_module":"V8\ScriptOriginOptions":private]=>
134-
bool(false)
135-
}
136-
["script_id":"V8\ScriptOrigin":private]=>
137-
int(0)
138-
["source_map_url":"V8\ScriptOrigin":private]=>
139-
string(0) ""
140-
}
141101
}
142102
Accessors:
143103
----------

0 commit comments

Comments
 (0)