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

Commit f090684

Browse files
committed
Remove deprecated V8\StackTrace::AsArray()
1 parent c1953fe commit f090684

File tree

8 files changed

+69
-240
lines changed

8 files changed

+69
-240
lines changed

src/php_v8_stack_trace.cc

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -48,28 +48,19 @@ void php_v8_stack_trace_create_from_stack_trace(zval *return_value, php_v8_isola
4848

4949
zend_update_property(this_ce, return_value, ZEND_STRL("frames"), &frames_array_zv);
5050
zval_ptr_dtor(&frames_array_zv);
51-
52-
/* v8::StackTrace::AsArray */
53-
zval as_array_zv;
54-
v8::Local<v8::Array> local_frames_array_v8 = trace->AsArray();
55-
php_v8_get_or_create_value(&as_array_zv, local_frames_array_v8, php_v8_isolate);
56-
zend_update_property(this_ce, return_value, ZEND_STRL("as_array"), &as_array_zv);
57-
zval_ptr_dtor(&as_array_zv);
5851
}
5952

6053
static PHP_METHOD(V8StackTrace, __construct)
6154
{
6255
zval *frames_zv = NULL;
63-
zval *as_array_zv = NULL;
6456

65-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "ao", &frames_zv, &as_array_zv) == FAILURE) {
57+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "a", &frames_zv) == FAILURE) {
6658
return;
6759
}
6860

6961
// TODO: check that all frame items are instance of StackFrame
7062

7163
zend_update_property(this_ce, getThis(), ZEND_STRL("frames"), frames_zv);
72-
zend_update_property(this_ce, getThis(), ZEND_STRL("as_array"), as_array_zv);
7364
}
7465

7566
static PHP_METHOD(V8StackTrace, getFrames)
@@ -130,17 +121,6 @@ static PHP_METHOD(V8StackTrace, GetFrameCount)
130121
RETURN_LONG(cnt);
131122
}
132123

133-
static PHP_METHOD(V8StackTrace, AsArray)
134-
{
135-
zval rv;
136-
137-
if (zend_parse_parameters_none() == FAILURE) {
138-
return;
139-
}
140-
141-
RETVAL_ZVAL(zend_read_property(this_ce, getThis(), ZEND_STRL("as_array"), 0, &rv), 1, 0);
142-
}
143-
144124
static PHP_METHOD(V8StackTrace, CurrentStackTrace)
145125
{
146126
zval *isolate_zv;
@@ -162,9 +142,8 @@ static PHP_METHOD(V8StackTrace, CurrentStackTrace)
162142
php_v8_stack_trace_create_from_stack_trace(return_value, php_v8_isolate, trace);
163143
}
164144

165-
ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_stack_trace___construct, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 2)
145+
ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_stack_trace___construct, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
166146
ZEND_ARG_TYPE_INFO(0, frames, IS_ARRAY, 0)
167-
ZEND_ARG_OBJ_INFO(0, frames, V8\\ArrayObject, 0)
168147
ZEND_END_ARG_INFO()
169148

170149
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_stack_trace_getFrames, ZEND_RETURN_VALUE, 0, IS_ARRAY, 0)
@@ -177,9 +156,6 @@ ZEND_END_ARG_INFO()
177156
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_stack_trace_GetFrameCount, ZEND_RETURN_VALUE, 0, IS_LONG, 0)
178157
ZEND_END_ARG_INFO()
179158

180-
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_stack_trace_AsArray, ZEND_RETURN_VALUE, 0, V8\\ArrayObject, 0)
181-
ZEND_END_ARG_INFO()
182-
183159
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_stack_trace_CurrentStackTrace, ZEND_RETURN_VALUE, 2, V8\\StackTrace, 0)
184160
ZEND_ARG_OBJ_INFO(0, isolate, V8\\Isolate, 0)
185161
ZEND_ARG_TYPE_INFO(0, frame_limit, IS_LONG, 0)
@@ -194,7 +170,6 @@ static const zend_function_entry php_v8_stack_trace_methods[] = {
194170
PHP_ME(V8StackTrace, GetFrame, arginfo_v8_stack_trace_GetFrame, ZEND_ACC_PUBLIC)
195171
PHP_ME(V8StackTrace, GetFrameCount, arginfo_v8_stack_trace_GetFrameCount, ZEND_ACC_PUBLIC)
196172

197-
PHP_ME(V8StackTrace, AsArray, arginfo_v8_stack_trace_AsArray, ZEND_ACC_PUBLIC)
198173
PHP_ME(V8StackTrace, CurrentStackTrace, arginfo_v8_stack_trace_CurrentStackTrace, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
199174

200175
PHP_FE_END
@@ -210,7 +185,6 @@ PHP_MINIT_FUNCTION (php_v8_stack_trace) {
210185
zend_declare_class_constant_long(this_ce, ZEND_STRL("MAX_FRAME_LIMIT"), PHP_V8_STACK_TRACE_MAX_FRAME_LIMIT);
211186

212187
zend_declare_property_null(this_ce, ZEND_STRL("frames"), ZEND_ACC_PRIVATE);
213-
zend_declare_property_null(this_ce, ZEND_STRL("as_array"), ZEND_ACC_PRIVATE);
214188

215189
return SUCCESS;
216190
}

stubs/src/StackTrace.php

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,13 @@ class StackTrace
3333
* @var array|StackFrame[]
3434
*/
3535
private $frames;
36-
/**
37-
* @var ArrayObject
38-
*/
39-
private $as_array;
4036

4137
/**
4238
* @param StackFrame[] $frames
43-
* @param ArrayObject $as_array
4439
*/
45-
public function __construct(array $frames, ArrayObject $as_array)
40+
public function __construct(array $frames)
4641
{
4742
$this->frames = $frames;
48-
$this->as_array = $as_array;
4943
}
5044

5145

@@ -87,16 +81,6 @@ public function GetFrameCount(): int
8781
return count($this->frames);
8882
}
8983

90-
/**
91-
* Returns StackTrace as a v8::Array that contains StackFrame objects.
92-
*
93-
* @return ArrayObject | null
94-
*/
95-
public function AsArray(): ArrayObject
96-
{
97-
return $this->as_array;
98-
}
99-
10084
/**
10185
* Grab a snapshot of the current JavaScript execution stack.
10286
*

tests/.v8-helpers.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,36 @@ public function __construct(PhpV8Testsuite $testsuite) {
3131
$this->testsuite = $testsuite;
3232
}
3333

34+
/**
35+
* @param \V8\Context $context
36+
* @param \V8\StackFrame[] $frames
37+
*
38+
* @return \V8\ArrayObject
39+
*/
40+
public function getStackTraceFramesAsArray(\V8\Context $context, array $frames)
41+
{
42+
$isolate = $context->GetIsolate();
43+
44+
$arr = new \V8\ArrayObject($context);
45+
46+
foreach ($frames as $i => $frame) {
47+
$f = new \V8\ObjectValue($context);
48+
49+
$f->Set($context, new \V8\StringValue($isolate, 'line'), new \V8\NumberValue($isolate, $frame->GetLineNumber()));
50+
$f->Set($context, new \V8\StringValue($isolate, 'column'), new \V8\NumberValue($isolate, $frame->GetColumn()));
51+
$f->Set($context, new \V8\StringValue($isolate, 'scriptId'), new \V8\NumberValue($isolate, $frame->GetScriptId()));
52+
$f->Set($context, new \V8\StringValue($isolate, 'scriptName'), new \V8\StringValue($isolate, $frame->GetScriptName()));
53+
$f->Set($context, new \V8\StringValue($isolate, 'scriptNameOrSourceURL'), new \V8\StringValue($isolate, $frame->GetScriptNameOrSourceURL()));
54+
$f->Set($context, new \V8\StringValue($isolate, 'functionName'), new \V8\StringValue($isolate, $frame->GetFunctionName()));
55+
$f->Set($context, new \V8\StringValue($isolate, 'isEval'), new \V8\BooleanValue($isolate, $frame->IsEval()));
56+
$f->Set($context, new \V8\StringValue($isolate, 'isConstructor'), new \V8\BooleanValue($isolate, $frame->IsConstructor()));
57+
58+
$arr->Set($context, new \V8\IntegerValue($isolate, $i), $f);
59+
}
60+
61+
return $arr;
62+
}
63+
3464
public function getPrintFunctionTemplate(\V8\Isolate $isolate, $newline = false)
3565
{
3666
$print_func_tpl = new \V8\FunctionTemplate($isolate, function (\V8\FunctionCallbackInfo $args) use ($newline) {

tests/V8Exception_GetStackTrace.phpt

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -132,37 +132,5 @@ V8\StackTrace->getFrames():
132132
}
133133
}
134134
V8\StackTrace->GetFrameCount(): int(1)
135-
V8\StackTrace->AsArray():
136-
object(V8\ArrayObject)#15 (2) {
137-
["isolate":"V8\Value":private]=>
138-
object(V8\Isolate)#3 (5) {
139-
["snapshot":"V8\Isolate":private]=>
140-
NULL
141-
["time_limit":"V8\Isolate":private]=>
142-
float(0)
143-
["time_limit_hit":"V8\Isolate":private]=>
144-
bool(false)
145-
["memory_limit":"V8\Isolate":private]=>
146-
int(0)
147-
["memory_limit_hit":"V8\Isolate":private]=>
148-
bool(false)
149-
}
150-
["context":"V8\ObjectValue":private]=>
151-
object(V8\Context)#8 (1) {
152-
["isolate":"V8\Context":private]=>
153-
object(V8\Isolate)#3 (5) {
154-
["snapshot":"V8\Isolate":private]=>
155-
NULL
156-
["time_limit":"V8\Isolate":private]=>
157-
float(0)
158-
["time_limit_hit":"V8\Isolate":private]=>
159-
bool(false)
160-
["memory_limit":"V8\Isolate":private]=>
161-
int(0)
162-
["memory_limit_hit":"V8\Isolate":private]=>
163-
bool(false)
164-
}
165-
}
166-
}
167135

168136
Stack trace created from manually created value is null: ok

tests/V8Message.phpt

Lines changed: 5 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ $isolate = new \V8\Isolate();
1212
$context = new \V8\Context($isolate);
1313

1414
$origin = new \V8\ScriptOrigin('resource_name');
15-
$trace = new \V8\StackTrace([], new \V8\ArrayObject($context));
15+
$trace = new \V8\StackTrace([]);
1616

1717
$obj = new V8\Message('message', 'source_line', $origin, 'resource_name', $trace);
1818

@@ -61,7 +61,7 @@ $helper->space();
6161
--EXPECT--
6262
Object representation (default):
6363
--------------------------------
64-
object(V8\Message)#8 (12) {
64+
object(V8\Message)#7 (12) {
6565
["message":"V8\Message":private]=>
6666
string(7) "message"
6767
["script_origin":"V8\Message":private]=>
@@ -93,42 +93,10 @@ object(V8\Message)#8 (12) {
9393
["resource_name":"V8\Message":private]=>
9494
string(13) "resource_name"
9595
["stack_trace":"V8\Message":private]=>
96-
object(V8\StackTrace)#6 (2) {
96+
object(V8\StackTrace)#6 (1) {
9797
["frames":"V8\StackTrace":private]=>
9898
array(0) {
9999
}
100-
["as_array":"V8\StackTrace":private]=>
101-
object(V8\ArrayObject)#7 (2) {
102-
["isolate":"V8\Value":private]=>
103-
object(V8\Isolate)#2 (5) {
104-
["snapshot":"V8\Isolate":private]=>
105-
NULL
106-
["time_limit":"V8\Isolate":private]=>
107-
float(0)
108-
["time_limit_hit":"V8\Isolate":private]=>
109-
bool(false)
110-
["memory_limit":"V8\Isolate":private]=>
111-
int(0)
112-
["memory_limit_hit":"V8\Isolate":private]=>
113-
bool(false)
114-
}
115-
["context":"V8\ObjectValue":private]=>
116-
object(V8\Context)#3 (1) {
117-
["isolate":"V8\Context":private]=>
118-
object(V8\Isolate)#2 (5) {
119-
["snapshot":"V8\Isolate":private]=>
120-
NULL
121-
["time_limit":"V8\Isolate":private]=>
122-
float(0)
123-
["time_limit_hit":"V8\Isolate":private]=>
124-
bool(false)
125-
["memory_limit":"V8\Isolate":private]=>
126-
int(0)
127-
["memory_limit_hit":"V8\Isolate":private]=>
128-
bool(false)
129-
}
130-
}
131-
}
132100
}
133101
["line_number":"V8\Message":private]=>
134102
int(0)
@@ -165,7 +133,7 @@ V8\Message::IsOpaque() matches expected false
165133

166134
Object representation:
167135
----------------------
168-
object(V8\Message)#9 (12) {
136+
object(V8\Message)#8 (12) {
169137
["message":"V8\Message":private]=>
170138
string(7) "message"
171139
["script_origin":"V8\Message":private]=>
@@ -197,42 +165,10 @@ object(V8\Message)#9 (12) {
197165
["resource_name":"V8\Message":private]=>
198166
string(13) "resource_name"
199167
["stack_trace":"V8\Message":private]=>
200-
object(V8\StackTrace)#6 (2) {
168+
object(V8\StackTrace)#6 (1) {
201169
["frames":"V8\StackTrace":private]=>
202170
array(0) {
203171
}
204-
["as_array":"V8\StackTrace":private]=>
205-
object(V8\ArrayObject)#7 (2) {
206-
["isolate":"V8\Value":private]=>
207-
object(V8\Isolate)#2 (5) {
208-
["snapshot":"V8\Isolate":private]=>
209-
NULL
210-
["time_limit":"V8\Isolate":private]=>
211-
float(0)
212-
["time_limit_hit":"V8\Isolate":private]=>
213-
bool(false)
214-
["memory_limit":"V8\Isolate":private]=>
215-
int(0)
216-
["memory_limit_hit":"V8\Isolate":private]=>
217-
bool(false)
218-
}
219-
["context":"V8\ObjectValue":private]=>
220-
object(V8\Context)#3 (1) {
221-
["isolate":"V8\Context":private]=>
222-
object(V8\Isolate)#2 (5) {
223-
["snapshot":"V8\Isolate":private]=>
224-
NULL
225-
["time_limit":"V8\Isolate":private]=>
226-
float(0)
227-
["time_limit_hit":"V8\Isolate":private]=>
228-
bool(false)
229-
["memory_limit":"V8\Isolate":private]=>
230-
int(0)
231-
["memory_limit_hit":"V8\Isolate":private]=>
232-
bool(false)
233-
}
234-
}
235-
}
236172
}
237173
["line_number":"V8\Message":private]=>
238174
int(1)

0 commit comments

Comments
 (0)