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

Commit 2f9104b

Browse files
committed
Add V8\Value::InstanceOf() method
1 parent e92f39d commit 2f9104b

21 files changed

+227
-149
lines changed

scripts/provision/.bashrc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,4 +127,7 @@ if [[ -e ~/.phpbrew/bashrc ]]; then
127127
fi
128128
fi
129129

130-
EDITOR=vim
130+
export EDITOR=vim
131+
132+
# To prevent a PHP test suite from asking to send results to the PHP QA team:
133+
export NO_INTERACTION=1

src/php_v8_value.cc

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -889,6 +889,35 @@ static PHP_METHOD(V8Value, TypeOf) {
889889
php_v8_get_or_create_value(return_value, local_string, php_v8_value->php_v8_isolate);
890890
}
891891

892+
static PHP_METHOD(V8Value, InstanceOf) {
893+
zval *php_v8_context_zv;
894+
zval *php_v8_value_object_zv;
895+
896+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "oo", &php_v8_context_zv, &php_v8_value_object_zv) == FAILURE) {
897+
return;
898+
}
899+
900+
PHP_V8_CONTEXT_FETCH_WITH_CHECK(php_v8_context_zv, php_v8_context);
901+
PHP_V8_VALUE_FETCH_WITH_CHECK(getThis(), php_v8_value);
902+
PHP_V8_VALUE_FETCH_WITH_CHECK(php_v8_value_object_zv, php_v8_value_object);
903+
904+
PHP_V8_DATA_ISOLATES_CHECK(php_v8_value, php_v8_context);
905+
PHP_V8_DATA_ISOLATES_CHECK(php_v8_value, php_v8_value_object);
906+
907+
PHP_V8_ENTER_STORED_ISOLATE(php_v8_context);
908+
PHP_V8_ENTER_CONTEXT(php_v8_context);
909+
910+
PHP_V8_TRY_CATCH(isolate);
911+
PHP_V8_INIT_ISOLATE_LIMITS_ON_CONTEXT(php_v8_context);
912+
913+
v8::Maybe<bool> maybe_res = php_v8_value_get_local(php_v8_value)->InstanceOf(context, php_v8_value_get_local_as<v8::Object>(php_v8_value_object));
914+
915+
PHP_V8_MAYBE_CATCH(php_v8_context, try_catch);
916+
PHP_V8_THROW_EXCEPTION_WHEN_NOTHING(maybe_res, "Failed to check");
917+
918+
RETURN_BOOL(maybe_res.FromJust());
919+
}
920+
892921

893922
ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_value___construct, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
894923
ZEND_ARG_OBJ_INFO(0, isolate, V8\\Isolate, 0)
@@ -1010,22 +1039,27 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_value_Uint32Value, ZEND_SEND_BY_VAL, ZEND_RETU
10101039
ZEND_ARG_OBJ_INFO(0, context, V8\\Context, 0)
10111040
ZEND_END_ARG_INFO()
10121041

1013-
ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_value_Equals, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 2)
1042+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_value_Equals, ZEND_RETURN_VALUE, 2, _IS_BOOL, 2)
10141043
ZEND_ARG_OBJ_INFO(0, context, V8\\Context, 0)
10151044
ZEND_ARG_OBJ_INFO(0, that, V8\\Value, 0)
10161045
ZEND_END_ARG_INFO()
10171046

1018-
ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_value_StrictEquals, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
1047+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_value_StrictEquals, ZEND_RETURN_VALUE, 1, _IS_BOOL, 0)
10191048
ZEND_ARG_OBJ_INFO(0, that, V8\\Value, 0)
10201049
ZEND_END_ARG_INFO()
10211050

1022-
ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_value_SameValue, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
1051+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_value_SameValue, ZEND_RETURN_VALUE, 1, _IS_BOOL, 0)
10231052
ZEND_ARG_OBJ_INFO(0, that, V8\\Value, 0)
10241053
ZEND_END_ARG_INFO()
10251054

10261055
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_value_TypeOf, ZEND_RETURN_VALUE, 0, V8\\StringValue, 0)
10271056
ZEND_END_ARG_INFO()
10281057

1058+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_value_InstanceOf, ZEND_RETURN_VALUE, 2, _IS_BOOL, 0)
1059+
ZEND_ARG_OBJ_INFO(0, context, V8\\Context, 0)
1060+
ZEND_ARG_OBJ_INFO(0, object, V8\\ObjectValue, 0)
1061+
ZEND_END_ARG_INFO()
1062+
10291063

10301064
static const zend_function_entry php_v8_value_methods[] = {
10311065
PHP_ME(V8Value, __construct, arginfo_v8_value___construct, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
@@ -1101,6 +1135,7 @@ static const zend_function_entry php_v8_value_methods[] = {
11011135
PHP_ME(V8Value, StrictEquals, arginfo_v8_value_StrictEquals, ZEND_ACC_PUBLIC)
11021136
PHP_ME(V8Value, SameValue, arginfo_v8_value_SameValue, ZEND_ACC_PUBLIC)
11031137
PHP_ME(V8Value, TypeOf, arginfo_v8_value_TypeOf, ZEND_ACC_PUBLIC)
1138+
PHP_ME(V8Value, InstanceOf, arginfo_v8_value_InstanceOf, ZEND_ACC_PUBLIC)
11041139

11051140
PHP_FE_END
11061141
};

stubs/src/Value.php

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public function GetIsolate()
4747
*
4848
* @return bool
4949
*/
50-
public function IsUndefined() : bool
50+
public function IsUndefined(): bool
5151
{
5252
}
5353

@@ -56,7 +56,7 @@ public function IsUndefined() : bool
5656
*
5757
* @return bool
5858
*/
59-
public function IsNull() : bool
59+
public function IsNull(): bool
6060
{
6161
}
6262

@@ -65,7 +65,7 @@ public function IsNull() : bool
6565
*
6666
* @return bool
6767
*/
68-
public function IsTrue() : bool
68+
public function IsTrue(): bool
6969
{
7070
}
7171

@@ -74,7 +74,7 @@ public function IsTrue() : bool
7474
*
7575
* @return bool
7676
*/
77-
public function IsFalse() : bool
77+
public function IsFalse(): bool
7878
{
7979
}
8080

@@ -84,7 +84,7 @@ public function IsFalse() : bool
8484
*
8585
* @return bool
8686
*/
87-
public function IsName() : bool
87+
public function IsName(): bool
8888
{
8989
}
9090

@@ -93,7 +93,7 @@ public function IsName() : bool
9393
*
9494
* @return bool
9595
*/
96-
public function IsString() : bool
96+
public function IsString(): bool
9797
{
9898
}
9999

@@ -102,7 +102,7 @@ public function IsString() : bool
102102
*
103103
* @return bool
104104
*/
105-
public function IsSymbol() : bool
105+
public function IsSymbol(): bool
106106
{
107107
}
108108

@@ -111,7 +111,7 @@ public function IsSymbol() : bool
111111
*
112112
* @return bool
113113
*/
114-
public function IsFunction() : bool
114+
public function IsFunction(): bool
115115
{
116116
}
117117

@@ -120,7 +120,7 @@ public function IsFunction() : bool
120120
*
121121
* @return bool
122122
*/
123-
public function IsArray() : bool
123+
public function IsArray(): bool
124124
{
125125
}
126126

@@ -129,7 +129,7 @@ public function IsArray() : bool
129129
*
130130
* @return bool
131131
*/
132-
public function IsObject() : bool
132+
public function IsObject(): bool
133133
{
134134
}
135135

@@ -138,7 +138,7 @@ public function IsObject() : bool
138138
*
139139
* @return bool
140140
*/
141-
public function IsBoolean() : bool
141+
public function IsBoolean(): bool
142142
{
143143
}
144144

@@ -147,7 +147,7 @@ public function IsBoolean() : bool
147147
*
148148
* @return bool
149149
*/
150-
public function IsNumber() : bool
150+
public function IsNumber(): bool
151151
{
152152
}
153153

@@ -156,7 +156,7 @@ public function IsNumber() : bool
156156
*
157157
* @return bool
158158
*/
159-
public function IsInt32() : bool
159+
public function IsInt32(): bool
160160
{
161161
}
162162

@@ -165,7 +165,7 @@ public function IsInt32() : bool
165165
*
166166
* @return bool
167167
*/
168-
public function IsUint32() : bool
168+
public function IsUint32(): bool
169169
{
170170
}
171171

@@ -174,7 +174,7 @@ public function IsUint32() : bool
174174
*
175175
* @return bool
176176
*/
177-
public function IsDate() : bool
177+
public function IsDate(): bool
178178
{
179179
}
180180

@@ -183,7 +183,7 @@ public function IsDate() : bool
183183
*
184184
* @return bool
185185
*/
186-
public function IsArgumentsObject() : bool
186+
public function IsArgumentsObject(): bool
187187
{
188188
}
189189

@@ -192,7 +192,7 @@ public function IsArgumentsObject() : bool
192192
*
193193
* @return bool
194194
*/
195-
public function IsBooleanObject() : bool
195+
public function IsBooleanObject(): bool
196196
{
197197
}
198198

@@ -201,7 +201,7 @@ public function IsBooleanObject() : bool
201201
*
202202
* @return bool
203203
*/
204-
public function IsNumberObject() : bool
204+
public function IsNumberObject(): bool
205205
{
206206
}
207207

@@ -210,14 +210,14 @@ public function IsNumberObject() : bool
210210
*
211211
* @return bool
212212
*/
213-
public function IsStringObject() : bool
213+
public function IsStringObject(): bool
214214
{
215215
}
216216

217217
/**
218218
* Returns true if this value is a Symbol object.
219219
*/
220-
public function IsSymbolObject() : bool
220+
public function IsSymbolObject(): bool
221221
{
222222
}
223223

@@ -226,7 +226,7 @@ public function IsSymbolObject() : bool
226226
*
227227
* @return bool
228228
*/
229-
public function IsNativeError() : bool
229+
public function IsNativeError(): bool
230230
{
231231
}
232232

@@ -235,7 +235,7 @@ public function IsNativeError() : bool
235235
*
236236
* @return bool
237237
*/
238-
public function IsRegExp() : bool
238+
public function IsRegExp(): bool
239239
{
240240
}
241241

@@ -378,11 +378,11 @@ public function Int32Value(Context $context)
378378
/**
379379
* @param Context $context
380380
*
381-
* @param Value $that
381+
* @param Value $that
382382
*
383383
* @return bool
384384
*/
385-
public function Equals(Context $context, Value $that)
385+
public function Equals(Context $context, Value $that): bool
386386
{
387387
}
388388

@@ -391,7 +391,7 @@ public function Equals(Context $context, Value $that)
391391
*
392392
* @return bool
393393
*/
394-
public function StrictEquals(Value $that)
394+
public function StrictEquals(Value $that): bool
395395
{
396396
}
397397

@@ -400,16 +400,24 @@ public function StrictEquals(Value $that)
400400
*
401401
* @return bool
402402
*/
403-
public function SameValue(Value $that)
403+
public function SameValue(Value $that): bool
404404
{
405405
}
406406

407407
/**
408408
* @return StringValue
409409
*/
410-
public function TypeOf() : StringValue
410+
public function TypeOf(): StringValue
411411
{
412412
}
413413

414-
//public function
414+
/**
415+
* @param Context $context
416+
* @param ObjectValue $object
417+
*
418+
* @return bool
419+
*/
420+
public function InstanceOf (Context $context, ObjectValue $object): bool
421+
{
422+
}
415423
}

0 commit comments

Comments
 (0)