@@ -116,95 +116,37 @@ static PHP_METHOD(V8Symbol, ForApi)
116116 php_v8_get_or_create_value (return_value, local_symbol, php_v8_context->php_v8_isolate );
117117}
118118
119- static PHP_METHOD (V8Symbol, GetIterator)
120- {
121- zval *php_v8_isolate_zv;
122-
123- if (zend_parse_parameters (ZEND_NUM_ARGS (), " o" , &php_v8_isolate_zv) == FAILURE) {
124- return ;
125- }
126-
127- PHP_V8_ISOLATE_FETCH_WITH_CHECK (php_v8_isolate_zv, php_v8_isolate);
128- PHP_V8_ENTER_ISOLATE (php_v8_isolate);
129-
130- v8::Local<v8::Symbol> local_symbol = v8::Symbol::GetIterator (isolate);
131-
132- PHP_V8_THROW_VALUE_EXCEPTION_WHEN_EMPTY (local_symbol, " Failed to create Symbol value" );
133-
134- php_v8_get_or_create_value (return_value, local_symbol, php_v8_isolate);
135- }
136-
137- static PHP_METHOD (V8Symbol, GetUnscopables)
138- {
139- zval *php_v8_isolate_zv;
140-
141- if (zend_parse_parameters (ZEND_NUM_ARGS (), " o" , &php_v8_isolate_zv) == FAILURE) {
142- return ;
143- }
144-
145- PHP_V8_ISOLATE_FETCH_WITH_CHECK (php_v8_isolate_zv, php_v8_isolate);
146- PHP_V8_ENTER_ISOLATE (php_v8_isolate);
147-
148- v8::Local<v8::Symbol> local_symbol = v8::Symbol::GetUnscopables (isolate);
149-
150- PHP_V8_THROW_VALUE_EXCEPTION_WHEN_EMPTY (local_symbol, " Failed to create Symbol value" );
151-
152- php_v8_get_or_create_value (return_value, local_symbol, php_v8_isolate);
153- }
154-
155- static PHP_METHOD (V8Symbol, GetToPrimitive)
156- {
157- zval *php_v8_isolate_zv;
158-
159- if (zend_parse_parameters (ZEND_NUM_ARGS (), " o" , &php_v8_isolate_zv) == FAILURE) {
160- return ;
161- }
162-
163- PHP_V8_ISOLATE_FETCH_WITH_CHECK (php_v8_isolate_zv, php_v8_isolate);
164- PHP_V8_ENTER_ISOLATE (php_v8_isolate);
165-
166- v8::Local<v8::Symbol> local_symbol = v8::Symbol::GetToPrimitive (isolate);
167-
168- PHP_V8_THROW_VALUE_EXCEPTION_WHEN_EMPTY (local_symbol, " Failed to create Symbol value" );
169-
170- php_v8_get_or_create_value (return_value, local_symbol, php_v8_isolate);
171- }
172-
173- static PHP_METHOD (V8Symbol, GetToStringTag)
174- {
175- zval *php_v8_isolate_zv;
176-
177- if (zend_parse_parameters (ZEND_NUM_ARGS (), " o" , &php_v8_isolate_zv) == FAILURE) {
178- return ;
179- }
180-
181- PHP_V8_ISOLATE_FETCH_WITH_CHECK (php_v8_isolate_zv, php_v8_isolate);
182- PHP_V8_ENTER_ISOLATE (php_v8_isolate);
183-
184- v8::Local<v8::Symbol> local_symbol = v8::Symbol::GetToStringTag (isolate);
185-
186- PHP_V8_THROW_VALUE_EXCEPTION_WHEN_EMPTY (local_symbol, " Failed to create Symbol value" );
187-
188- php_v8_get_or_create_value (return_value, local_symbol, php_v8_isolate);
189- }
190-
191- static PHP_METHOD (V8Symbol, GetIsConcatSpreadable)
192- {
193- zval *php_v8_isolate_zv;
194-
195- if (zend_parse_parameters (ZEND_NUM_ARGS (), " o" , &php_v8_isolate_zv) == FAILURE) {
196- return ;
197- }
198-
199- PHP_V8_ISOLATE_FETCH_WITH_CHECK (php_v8_isolate_zv, php_v8_isolate);
200- PHP_V8_ENTER_ISOLATE (php_v8_isolate);
201-
202- v8::Local<v8::Symbol> local_symbol = v8::Symbol::GetIsConcatSpreadable (isolate);
203-
204- PHP_V8_THROW_VALUE_EXCEPTION_WHEN_EMPTY (local_symbol, " Failed to create Symbol value" );
205-
206- php_v8_get_or_create_value (return_value, local_symbol, php_v8_isolate);
207- }
119+ // Well-known symbols
120+
121+ #define PHP_V8_SYMBOL_WELL_KNOWN_METHOD (classname, name ) \
122+ PHP_METHOD (classname, name) \
123+ { \
124+ zval *php_v8_isolate_zv; \
125+ \
126+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " o" , &php_v8_isolate_zv) == FAILURE) { \
127+ return ; \
128+ } \
129+ \
130+ PHP_V8_ISOLATE_FETCH_WITH_CHECK (php_v8_isolate_zv, php_v8_isolate); \
131+ PHP_V8_ENTER_ISOLATE (php_v8_isolate); \
132+ \
133+ v8::Local<v8::Symbol> local_symbol = v8::Symbol::name (isolate); \
134+ \
135+ PHP_V8_THROW_VALUE_EXCEPTION_WHEN_EMPTY (local_symbol, " Failed to create Symbol value" ); \
136+ \
137+ php_v8_get_or_create_value (return_value, local_symbol, php_v8_isolate); \
138+ } \
139+
140+ static PHP_V8_SYMBOL_WELL_KNOWN_METHOD (V8Symbol, GetHasInstance);
141+ static PHP_V8_SYMBOL_WELL_KNOWN_METHOD (V8Symbol, GetIsConcatSpreadable);
142+ static PHP_V8_SYMBOL_WELL_KNOWN_METHOD (V8Symbol, GetIterator);
143+ static PHP_V8_SYMBOL_WELL_KNOWN_METHOD (V8Symbol, GetMatch);
144+ static PHP_V8_SYMBOL_WELL_KNOWN_METHOD (V8Symbol, GetReplace);
145+ static PHP_V8_SYMBOL_WELL_KNOWN_METHOD (V8Symbol, GetSearch);
146+ static PHP_V8_SYMBOL_WELL_KNOWN_METHOD (V8Symbol, GetSplit);
147+ static PHP_V8_SYMBOL_WELL_KNOWN_METHOD (V8Symbol, GetToPrimitive);
148+ static PHP_V8_SYMBOL_WELL_KNOWN_METHOD (V8Symbol, GetToStringTag);
149+ static PHP_V8_SYMBOL_WELL_KNOWN_METHOD (V8Symbol, GetUnscopables);
208150
209151
210152ZEND_BEGIN_ARG_INFO_EX (arginfo_v8_symbol___construct, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1 )
@@ -225,25 +167,22 @@ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_symbol_ForApi, ZEND_RET
225167 ZEND_ARG_OBJ_INFO(0 , name, V8\\StringValue, 0 )
226168ZEND_END_ARG_INFO()
227169
228- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_symbol_GetIterator, ZEND_RETURN_VALUE, 1 , V8\\SymbolValue, 0 )
229- ZEND_ARG_OBJ_INFO(0 , isolate, V8\\Isolate, 0 )
230- ZEND_END_ARG_INFO()
231-
232- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_symbol_GetUnscopables, ZEND_RETURN_VALUE, 1 , V8\\SymbolValue, 0 )
233- ZEND_ARG_OBJ_INFO(0 , isolate, V8\\Isolate, 0 )
234- ZEND_END_ARG_INFO()
235-
236- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_symbol_GetToPrimitive, ZEND_RETURN_VALUE, 1 , V8\\SymbolValue, 0 )
237- ZEND_ARG_OBJ_INFO(0 , isolate, V8\\Isolate, 0 )
238- ZEND_END_ARG_INFO()
239-
240- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_symbol_GetToStringTag, ZEND_RETURN_VALUE, 1 , V8\\SymbolValue, 0 )
241- ZEND_ARG_OBJ_INFO(0 , isolate, V8\\Isolate, 0 )
242- ZEND_END_ARG_INFO()
170+ #define PHP_V8_SYMBOL_WELL_KNOWN_ARGS (name ) \
171+ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX (name, ZEND_RETURN_VALUE, 1 , V8\\SymbolValue, 0 ) \
172+ ZEND_ARG_OBJ_INFO(0 , isolate, V8\\Isolate, 0 ) \
173+ ZEND_END_ARG_INFO() \
243174
244- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_symbol_GetIsConcatSpreadable, ZEND_RETURN_VALUE, 1 , V8\\SymbolValue, 0 )
245- ZEND_ARG_OBJ_INFO(0 , isolate, V8\\Isolate, 0 )
246- ZEND_END_ARG_INFO()
175+ // Well-known symbols
176+ PHP_V8_SYMBOL_WELL_KNOWN_ARGS(arginfo_v8_symbol_GetHasInstance);
177+ PHP_V8_SYMBOL_WELL_KNOWN_ARGS (arginfo_v8_symbol_GetIsConcatSpreadable);
178+ PHP_V8_SYMBOL_WELL_KNOWN_ARGS (arginfo_v8_symbol_GetIterator);
179+ PHP_V8_SYMBOL_WELL_KNOWN_ARGS (arginfo_v8_symbol_GetMatch);
180+ PHP_V8_SYMBOL_WELL_KNOWN_ARGS (arginfo_v8_symbol_GetReplace);
181+ PHP_V8_SYMBOL_WELL_KNOWN_ARGS (arginfo_v8_symbol_GetSearch);
182+ PHP_V8_SYMBOL_WELL_KNOWN_ARGS (arginfo_v8_symbol_GetSplit);
183+ PHP_V8_SYMBOL_WELL_KNOWN_ARGS (arginfo_v8_symbol_GetToPrimitive);
184+ PHP_V8_SYMBOL_WELL_KNOWN_ARGS (arginfo_v8_symbol_GetToStringTag);
185+ PHP_V8_SYMBOL_WELL_KNOWN_ARGS (arginfo_v8_symbol_GetUnscopables);
247186
248187
249188static const zend_function_entry php_v8_symbol_methods[] = {
@@ -254,11 +193,17 @@ static const zend_function_entry php_v8_symbol_methods[] = {
254193 PHP_ME (V8Symbol, For, arginfo_v8_symbol_For, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
255194 PHP_ME (V8Symbol, ForApi, arginfo_v8_symbol_ForApi, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
256195
257- PHP_ME (V8Symbol, GetIterator, arginfo_v8_symbol_GetIterator, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
258- PHP_ME (V8Symbol, GetUnscopables, arginfo_v8_symbol_GetUnscopables, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
259- PHP_ME (V8Symbol, GetToPrimitive, arginfo_v8_symbol_GetToPrimitive, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
260- PHP_ME (V8Symbol, GetToStringTag, arginfo_v8_symbol_GetToStringTag, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
261- PHP_ME (V8Symbol, GetIsConcatSpreadable, arginfo_v8_symbol_GetIsConcatSpreadable, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
196+ // Well-known symbols
197+ PHP_ME (V8Symbol, GetHasInstance, arginfo_v8_symbol_GetHasInstance, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
198+ PHP_ME (V8Symbol, GetIsConcatSpreadable, arginfo_v8_symbol_GetIsConcatSpreadable, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
199+ PHP_ME (V8Symbol, GetIterator, arginfo_v8_symbol_GetIterator, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
200+ PHP_ME (V8Symbol, GetMatch, arginfo_v8_symbol_GetMatch, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
201+ PHP_ME (V8Symbol, GetReplace, arginfo_v8_symbol_GetReplace, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
202+ PHP_ME (V8Symbol, GetSearch, arginfo_v8_symbol_GetSearch, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
203+ PHP_ME (V8Symbol, GetSplit, arginfo_v8_symbol_GetSplit, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
204+ PHP_ME (V8Symbol, GetToPrimitive, arginfo_v8_symbol_GetToPrimitive, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
205+ PHP_ME (V8Symbol, GetToStringTag, arginfo_v8_symbol_GetToStringTag, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
206+ PHP_ME (V8Symbol, GetUnscopables, arginfo_v8_symbol_GetUnscopables, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
262207
263208 PHP_FE_END
264209};
0 commit comments