1/* Copyright JS Foundation and other contributors, http://js.foundation
2 *
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16/* Description of built-in objects
17   in format (ECMA_BUILTIN_ID_id, object_type, prototype_id, is_extensible, is_static, underscored_id) */
18
19/* The Object.prototype object (15.2.4) */
20BUILTIN (ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
21         ECMA_OBJECT_TYPE_GENERAL,
22         ECMA_BUILTIN_ID__COUNT /* no prototype */,
23         true,
24         object_prototype)
25
26/* The Object object (15.2.1) */
27BUILTIN_ROUTINE (ECMA_BUILTIN_ID_OBJECT,
28                 ECMA_OBJECT_TYPE_FUNCTION,
29                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
30                 true,
31                 object)
32
33#if ENABLED (JERRY_BUILTIN_ARRAY)
34/* The Array.prototype object (15.4.4) */
35BUILTIN (ECMA_BUILTIN_ID_ARRAY_PROTOTYPE,
36         ECMA_OBJECT_TYPE_ARRAY,
37         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
38         true,
39         array_prototype)
40
41/* The Array object (15.4.1) */
42BUILTIN_ROUTINE (ECMA_BUILTIN_ID_ARRAY,
43                 ECMA_OBJECT_TYPE_FUNCTION,
44                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
45                 true,
46                 array)
47#endif /* ENABLED (JERRY_BUILTIN_ARRAY) */
48
49#if ENABLED (JERRY_ES2015)
50# if ENABLED (JERRY_BUILTIN_STRING)
51/* The String.prototype object (21.1.3) */
52BUILTIN (ECMA_BUILTIN_ID_STRING_PROTOTYPE,
53         ECMA_OBJECT_TYPE_GENERAL,
54         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
55         true,
56         string_prototype)
57# endif /* ENABLED (JERRY_BUILTIN_STRING) */
58
59# if ENABLED (JERRY_BUILTIN_BOOLEAN)
60/* The Boolean.prototype object (19.3.3) */
61BUILTIN (ECMA_BUILTIN_ID_BOOLEAN_PROTOTYPE,
62         ECMA_OBJECT_TYPE_GENERAL,
63         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
64         true,
65         boolean_prototype)
66# endif /* ENABLED (JERRY_BUILTIN_BOOLEAN) */
67
68# if ENABLED (JERRY_BUILTIN_NUMBER)
69/* The Number.prototype object (20.1.3) */
70BUILTIN (ECMA_BUILTIN_ID_NUMBER_PROTOTYPE,
71         ECMA_OBJECT_TYPE_GENERAL,
72         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
73         true,
74         number_prototype)
75# endif /* ENABLED (JERRY_BUILTIN_NUMBER) */
76
77# if ENABLED (JERRY_BUILTIN_DATE)
78/* The Date.prototype object (20.3.4) */
79BUILTIN (ECMA_BUILTIN_ID_DATE_PROTOTYPE,
80         ECMA_OBJECT_TYPE_GENERAL,
81         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
82         true,
83         date_prototype)
84# endif /* ENABLED (JERRY_BUILTIN_DATE) */
85
86# if ENABLED (JERRY_BUILTIN_REGEXP)
87/* The RegExp.prototype object (21.2.5) */
88BUILTIN (ECMA_BUILTIN_ID_REGEXP_PROTOTYPE,
89         ECMA_OBJECT_TYPE_GENERAL,
90         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
91         true,
92         regexp_prototype)
93# endif /* ENABLED (JERRY_BUILTIN_REGEXP) */
94#else /* !ENABLED (JERRY_ES2015) */
95# if ENABLED (JERRY_BUILTIN_STRING)
96/* The String.prototype object (15.5.4) */
97BUILTIN (ECMA_BUILTIN_ID_STRING_PROTOTYPE,
98         ECMA_OBJECT_TYPE_CLASS,
99         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
100         true,
101         string_prototype)
102# endif /* ENABLED (JERRY_BUILTIN_STRING) */
103
104# if ENABLED (JERRY_BUILTIN_BOOLEAN)
105/* The Boolean.prototype object (15.6.4) */
106BUILTIN (ECMA_BUILTIN_ID_BOOLEAN_PROTOTYPE,
107         ECMA_OBJECT_TYPE_CLASS,
108         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
109         true,
110         boolean_prototype)
111# endif /* ENABLED (JERRY_BUILTIN_BOOLEAN) */
112
113# if ENABLED (JERRY_BUILTIN_NUMBER)
114/* The Number.prototype object (15.7.4) */
115BUILTIN (ECMA_BUILTIN_ID_NUMBER_PROTOTYPE,
116         ECMA_OBJECT_TYPE_CLASS,
117         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
118         true,
119         number_prototype)
120# endif /* ENABLED (JERRY_BUILTIN_NUMBER) */
121
122# if ENABLED (JERRY_BUILTIN_DATE)
123/* The Date.prototype object (15.9.4) */
124BUILTIN (ECMA_BUILTIN_ID_DATE_PROTOTYPE,
125         ECMA_OBJECT_TYPE_CLASS,
126         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
127         true,
128         date_prototype)
129# endif /* ENABLED (JERRY_BUILTIN_DATE) */
130
131# if ENABLED (JERRY_BUILTIN_REGEXP)
132/* The RegExp.prototype object (15.10.6) */
133BUILTIN (ECMA_BUILTIN_ID_REGEXP_PROTOTYPE,
134         ECMA_OBJECT_TYPE_CLASS,
135         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
136         true,
137         regexp_prototype)
138# endif /* ENABLED (JERRY_BUILTIN_REGEXP) */
139#endif /* !ENABLED (JERRY_ES2015) */
140
141#if ENABLED (JERRY_BUILTIN_STRING)
142/* The String object (15.5.1) */
143BUILTIN_ROUTINE (ECMA_BUILTIN_ID_STRING,
144                 ECMA_OBJECT_TYPE_FUNCTION,
145                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
146                 true,
147                 string)
148#endif /* ENABLED (JERRY_BUILTIN_STRING) */
149
150#if ENABLED (JERRY_BUILTIN_BOOLEAN)
151/* The Boolean object (15.6.1) */
152BUILTIN_ROUTINE (ECMA_BUILTIN_ID_BOOLEAN,
153                 ECMA_OBJECT_TYPE_FUNCTION,
154                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
155                 true,
156                 boolean)
157#endif /* ENABLED (JERRY_BUILTIN_BOOLEAN) */
158
159#if ENABLED (JERRY_BUILTIN_NUMBER)
160/* The Number object (15.7.1) */
161BUILTIN_ROUTINE (ECMA_BUILTIN_ID_NUMBER,
162                 ECMA_OBJECT_TYPE_FUNCTION,
163                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
164                 true,
165                 number)
166#endif /* ENABLED (JERRY_BUILTIN_NUMBER) */
167
168/* The Function.prototype object (15.3.4) */
169BUILTIN_ROUTINE (ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
170                 ECMA_OBJECT_TYPE_FUNCTION,
171                 ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
172                 true,
173                 function_prototype)
174
175/* The Function object (15.3.1) */
176BUILTIN_ROUTINE (ECMA_BUILTIN_ID_FUNCTION,
177                 ECMA_OBJECT_TYPE_FUNCTION,
178                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
179                 true,
180                 function)
181
182#if ENABLED (JERRY_BUILTIN_MATH)
183/* The Math object (15.8) */
184BUILTIN (ECMA_BUILTIN_ID_MATH,
185         ECMA_OBJECT_TYPE_GENERAL,
186         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
187         true,
188         math)
189#endif /* ENABLED (JERRY_BUILTIN_MATH) */
190
191#if ENABLED (JERRY_ES2015_BUILTIN_REFLECT)
192
193/* The Reflect object (26.1) */
194BUILTIN (ECMA_BUILTIN_ID_REFLECT,
195         ECMA_OBJECT_TYPE_GENERAL,
196         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
197         true,
198         reflect)
199#endif /* ENABLED (JERRY_ES2015_BUILTIN_REFLECT) */
200
201#if ENABLED (JERRY_BUILTIN_JSON)
202/* The JSON object (15.12) */
203BUILTIN (ECMA_BUILTIN_ID_JSON,
204         ECMA_OBJECT_TYPE_GENERAL,
205         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
206         true,
207         json)
208#endif /* ENABLED (JERRY_BUILTIN_JSON) */
209
210#if ENABLED (JERRY_BUILTIN_DATE)
211/* The Date object (15.9.3) */
212BUILTIN_ROUTINE (ECMA_BUILTIN_ID_DATE,
213                 ECMA_OBJECT_TYPE_FUNCTION,
214                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
215                 true,
216                 date)
217#endif /* ENABLED (JERRY_BUILTIN_DATE) */
218
219#if ENABLED (JERRY_BUILTIN_REGEXP)
220/* The RegExp object (15.10) */
221BUILTIN_ROUTINE (ECMA_BUILTIN_ID_REGEXP,
222                 ECMA_OBJECT_TYPE_FUNCTION,
223                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
224                 true,
225                 regexp)
226#endif /* ENABLED (JERRY_BUILTIN_REGEXP) */
227
228#if ENABLED (JERRY_ES2015)
229#define ECMA_BUILTIN_NATIVE_ERROR_PROTOTYPE_ID ECMA_BUILTIN_ID_ERROR
230#else /* !ENABLED (JERRY_ES2015) */
231#define ECMA_BUILTIN_NATIVE_ERROR_PROTOTYPE_ID ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE
232#endif /* ENABLED (JERRY_ES2015 */
233
234/* The Error object (15.11.1) */
235BUILTIN_ROUTINE (ECMA_BUILTIN_ID_ERROR,
236                 ECMA_OBJECT_TYPE_FUNCTION,
237                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
238                 true,
239                 error)
240
241/* The Error.prototype object (15.11.4) */
242BUILTIN (ECMA_BUILTIN_ID_ERROR_PROTOTYPE,
243         ECMA_OBJECT_TYPE_GENERAL,
244         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
245         true,
246         error_prototype)
247
248#if ENABLED (JERRY_BUILTIN_ERRORS)
249/* The EvalError.prototype object (15.11.6.1) */
250BUILTIN (ECMA_BUILTIN_ID_EVAL_ERROR_PROTOTYPE,
251         ECMA_OBJECT_TYPE_GENERAL,
252         ECMA_BUILTIN_ID_ERROR_PROTOTYPE,
253         true,
254         eval_error_prototype)
255
256/* The EvalError object (15.11.6.1) */
257BUILTIN_ROUTINE (ECMA_BUILTIN_ID_EVAL_ERROR,
258                 ECMA_OBJECT_TYPE_FUNCTION,
259                 ECMA_BUILTIN_NATIVE_ERROR_PROTOTYPE_ID,
260                 true,
261                 eval_error)
262
263/* The RangeError.prototype object (15.11.6.2) */
264BUILTIN (ECMA_BUILTIN_ID_RANGE_ERROR_PROTOTYPE,
265         ECMA_OBJECT_TYPE_GENERAL,
266         ECMA_BUILTIN_ID_ERROR_PROTOTYPE,
267         true,
268         range_error_prototype)
269
270/* The RangeError object (15.11.6.2) */
271BUILTIN_ROUTINE (ECMA_BUILTIN_ID_RANGE_ERROR,
272                 ECMA_OBJECT_TYPE_FUNCTION,
273                 ECMA_BUILTIN_NATIVE_ERROR_PROTOTYPE_ID,
274                 true,
275                 range_error)
276
277/* The ReferenceError.prototype object (15.11.6.3) */
278BUILTIN (ECMA_BUILTIN_ID_REFERENCE_ERROR_PROTOTYPE,
279         ECMA_OBJECT_TYPE_GENERAL,
280         ECMA_BUILTIN_ID_ERROR_PROTOTYPE,
281         true,
282         reference_error_prototype)
283
284/* The ReferenceError object (15.11.6.3) */
285BUILTIN_ROUTINE (ECMA_BUILTIN_ID_REFERENCE_ERROR,
286                 ECMA_OBJECT_TYPE_FUNCTION,
287                 ECMA_BUILTIN_NATIVE_ERROR_PROTOTYPE_ID,
288                 true,
289                 reference_error)
290
291/* The SyntaxError.prototype object (15.11.6.4) */
292BUILTIN (ECMA_BUILTIN_ID_SYNTAX_ERROR_PROTOTYPE,
293         ECMA_OBJECT_TYPE_GENERAL,
294         ECMA_BUILTIN_ID_ERROR_PROTOTYPE,
295         true,
296         syntax_error_prototype)
297
298/* The SyntaxError object (15.11.6.4) */
299BUILTIN_ROUTINE (ECMA_BUILTIN_ID_SYNTAX_ERROR,
300                 ECMA_OBJECT_TYPE_FUNCTION,
301                 ECMA_BUILTIN_NATIVE_ERROR_PROTOTYPE_ID,
302                 true,
303                 syntax_error)
304
305/* The TypeError.prototype object (15.11.6.5) */
306BUILTIN (ECMA_BUILTIN_ID_TYPE_ERROR_PROTOTYPE,
307         ECMA_OBJECT_TYPE_GENERAL,
308         ECMA_BUILTIN_ID_ERROR_PROTOTYPE,
309         true,
310         type_error_prototype)
311
312/* The TypeError object (15.11.6.5) */
313BUILTIN_ROUTINE (ECMA_BUILTIN_ID_TYPE_ERROR,
314                 ECMA_OBJECT_TYPE_FUNCTION,
315                 ECMA_BUILTIN_NATIVE_ERROR_PROTOTYPE_ID,
316                 true,
317                 type_error)
318
319/* The URIError.prototype object (15.11.6.6) */
320BUILTIN (ECMA_BUILTIN_ID_URI_ERROR_PROTOTYPE,
321         ECMA_OBJECT_TYPE_GENERAL,
322         ECMA_BUILTIN_ID_ERROR_PROTOTYPE,
323         true,
324         uri_error_prototype)
325
326/* The URIError object (15.11.6.6) */
327BUILTIN_ROUTINE (ECMA_BUILTIN_ID_URI_ERROR,
328                 ECMA_OBJECT_TYPE_FUNCTION,
329                 ECMA_BUILTIN_NATIVE_ERROR_PROTOTYPE_ID,
330                 true,
331                 uri_error)
332#endif /* ENABLED (JERRY_BUILTIN_ERRORS) */
333
334/**< The [[ThrowTypeError]] object (13.2.3) */
335BUILTIN_ROUTINE (ECMA_BUILTIN_ID_TYPE_ERROR_THROWER,
336                 ECMA_OBJECT_TYPE_FUNCTION,
337                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
338                 false,
339                 type_error_thrower)
340
341#if ENABLED (JERRY_ES2015_BUILTIN_TYPEDARRAY)
342
343/* The ArrayBuffer.prototype object (ES2015 24.1.4) */
344BUILTIN (ECMA_BUILTIN_ID_ARRAYBUFFER_PROTOTYPE,
345         ECMA_OBJECT_TYPE_GENERAL,
346         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
347         true,
348         arraybuffer_prototype)
349
350/* The ArrayBuffer object (ES2015 24.1.2) */
351BUILTIN_ROUTINE (ECMA_BUILTIN_ID_ARRAYBUFFER,
352                 ECMA_OBJECT_TYPE_FUNCTION,
353                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
354                 true,
355                 arraybuffer)
356
357 /* The %TypedArrayPrototype% object (ES2015 24.2.3) */
358BUILTIN (ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
359         ECMA_OBJECT_TYPE_GENERAL,
360         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
361         true,
362         typedarray_prototype)
363
364/* The %TypedArray% intrinsic object (ES2015 22.2.1)
365   Note: The routines must be in this order. */
366BUILTIN_ROUTINE (ECMA_BUILTIN_ID_TYPEDARRAY,
367                 ECMA_OBJECT_TYPE_FUNCTION,
368                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
369                 true,
370                 typedarray)
371
372BUILTIN_ROUTINE (ECMA_BUILTIN_ID_INT8ARRAY,
373                 ECMA_OBJECT_TYPE_FUNCTION,
374                 ECMA_BUILTIN_ID_TYPEDARRAY,
375                 true,
376                 int8array)
377
378BUILTIN_ROUTINE (ECMA_BUILTIN_ID_UINT8ARRAY,
379                 ECMA_OBJECT_TYPE_FUNCTION,
380                 ECMA_BUILTIN_ID_TYPEDARRAY,
381                 true,
382                 uint8array)
383
384BUILTIN_ROUTINE (ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY,
385                 ECMA_OBJECT_TYPE_FUNCTION,
386                 ECMA_BUILTIN_ID_TYPEDARRAY,
387                 true,
388                 uint8clampedarray)
389
390BUILTIN_ROUTINE (ECMA_BUILTIN_ID_INT16ARRAY,
391                 ECMA_OBJECT_TYPE_FUNCTION,
392                 ECMA_BUILTIN_ID_TYPEDARRAY,
393                 true,
394                 int16array)
395
396BUILTIN_ROUTINE (ECMA_BUILTIN_ID_UINT16ARRAY,
397                 ECMA_OBJECT_TYPE_FUNCTION,
398                 ECMA_BUILTIN_ID_TYPEDARRAY,
399                 true,
400                 uint16array)
401
402BUILTIN_ROUTINE (ECMA_BUILTIN_ID_INT32ARRAY,
403                 ECMA_OBJECT_TYPE_FUNCTION,
404                 ECMA_BUILTIN_ID_TYPEDARRAY,
405                 true,
406                 int32array)
407
408BUILTIN_ROUTINE (ECMA_BUILTIN_ID_UINT32ARRAY,
409                 ECMA_OBJECT_TYPE_FUNCTION,
410                 ECMA_BUILTIN_ID_TYPEDARRAY,
411                 true,
412                 uint32array)
413
414BUILTIN_ROUTINE (ECMA_BUILTIN_ID_FLOAT32ARRAY,
415                 ECMA_OBJECT_TYPE_FUNCTION,
416                 ECMA_BUILTIN_ID_TYPEDARRAY,
417                 true,
418                 float32array)
419
420#if ENABLED (JERRY_NUMBER_TYPE_FLOAT64)
421BUILTIN_ROUTINE (ECMA_BUILTIN_ID_FLOAT64ARRAY,
422                 ECMA_OBJECT_TYPE_FUNCTION,
423                 ECMA_BUILTIN_ID_TYPEDARRAY,
424                 true,
425                 float64array)
426#endif /* ENABLED (JERRY_NUMBER_TYPE_FLOAT64) */
427
428BUILTIN (ECMA_BUILTIN_ID_INT8ARRAY_PROTOTYPE,
429         ECMA_OBJECT_TYPE_GENERAL,
430         ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
431         true,
432         int8array_prototype)
433
434BUILTIN (ECMA_BUILTIN_ID_UINT8ARRAY_PROTOTYPE,
435         ECMA_OBJECT_TYPE_GENERAL,
436         ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
437         true,
438         uint8array_prototype)
439
440BUILTIN (ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY_PROTOTYPE,
441         ECMA_OBJECT_TYPE_GENERAL,
442         ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
443         true,
444         uint8clampedarray_prototype)
445
446BUILTIN (ECMA_BUILTIN_ID_INT16ARRAY_PROTOTYPE,
447         ECMA_OBJECT_TYPE_GENERAL,
448         ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
449         true,
450         int16array_prototype)
451
452BUILTIN (ECMA_BUILTIN_ID_UINT16ARRAY_PROTOTYPE,
453         ECMA_OBJECT_TYPE_GENERAL,
454         ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
455         true,
456         uint16array_prototype)
457
458BUILTIN (ECMA_BUILTIN_ID_INT32ARRAY_PROTOTYPE,
459         ECMA_OBJECT_TYPE_GENERAL,
460         ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
461         true,
462         int32array_prototype)
463
464BUILTIN (ECMA_BUILTIN_ID_UINT32ARRAY_PROTOTYPE,
465         ECMA_OBJECT_TYPE_GENERAL,
466         ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
467         true,
468         uint32array_prototype)
469
470BUILTIN (ECMA_BUILTIN_ID_FLOAT32ARRAY_PROTOTYPE,
471         ECMA_OBJECT_TYPE_GENERAL,
472         ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
473         true,
474         float32array_prototype)
475
476#if ENABLED (JERRY_NUMBER_TYPE_FLOAT64)
477BUILTIN (ECMA_BUILTIN_ID_FLOAT64ARRAY_PROTOTYPE,
478         ECMA_OBJECT_TYPE_GENERAL,
479         ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
480         true,
481         float64array_prototype)
482#endif /* ENABLED (JERRY_NUMBER_TYPE_FLOAT64) */
483#endif /* ENABLED (JERRY_ES2015_BUILTIN_TYPEDARRAY) */
484
485#if ENABLED (JERRY_ES2015_BUILTIN_PROMISE)
486
487BUILTIN (ECMA_BUILTIN_ID_PROMISE_PROTOTYPE,
488         ECMA_OBJECT_TYPE_GENERAL,
489         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
490         true,
491         promise_prototype)
492
493BUILTIN_ROUTINE (ECMA_BUILTIN_ID_PROMISE,
494                 ECMA_OBJECT_TYPE_FUNCTION,
495                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
496                 true,
497                 promise)
498
499#endif /* ENABLED (JERRY_ES2015_BUILTIN_PROMISE) */
500
501#if ENABLED (JERRY_ES2015_BUILTIN_MAP)
502
503/* The Map prototype object (23.1.3) */
504BUILTIN (ECMA_BUILTIN_ID_MAP_PROTOTYPE,
505         ECMA_OBJECT_TYPE_GENERAL,
506         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
507         true,
508         map_prototype)
509
510/* The Map routine (ECMA-262 v6, 23.1.1.1) */
511BUILTIN_ROUTINE (ECMA_BUILTIN_ID_MAP,
512                 ECMA_OBJECT_TYPE_FUNCTION,
513                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
514                 true,
515                 map)
516
517#endif /* ENABLED (JERRY_ES2015_BUILTIN_MAP) */
518
519#if ENABLED (JERRY_ES2015_BUILTIN_SET)
520
521/* The Set prototype object (23.1.3) */
522BUILTIN (ECMA_BUILTIN_ID_SET_PROTOTYPE,
523         ECMA_OBJECT_TYPE_GENERAL,
524         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
525         true,
526         set_prototype)
527
528/* The Set routine (ECMA-262 v6, 23.1.1.1) */
529BUILTIN_ROUTINE (ECMA_BUILTIN_ID_SET,
530                 ECMA_OBJECT_TYPE_FUNCTION,
531                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
532                 true,
533                 set)
534
535#endif /* ENABLED (JERRY_ES2015_BUILTIN_SET) */
536
537#if ENABLED (JERRY_ES2015_BUILTIN_WEAKMAP)
538
539/* The WeakMap prototype object (23.1.3) */
540BUILTIN (ECMA_BUILTIN_ID_WEAKMAP_PROTOTYPE,
541         ECMA_OBJECT_TYPE_GENERAL,
542         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
543         true,
544         weakmap_prototype)
545
546/* The WeakMap routine (ECMA-262 v6, 23.1.1.1) */
547BUILTIN_ROUTINE (ECMA_BUILTIN_ID_WEAKMAP,
548                 ECMA_OBJECT_TYPE_FUNCTION,
549                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
550                 true,
551                 weakmap)
552
553#endif /* ENABLED (JERRY_ES2015_BUILTIN_WEAKMAP) */
554
555#if ENABLED (JERRY_ES2015_BUILTIN_WEAKSET)
556
557/* The WeakSet prototype object (23.1.3) */
558BUILTIN (ECMA_BUILTIN_ID_WEAKSET_PROTOTYPE,
559         ECMA_OBJECT_TYPE_GENERAL,
560         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
561         true,
562         weakset_prototype)
563
564/* The WeakSet routine (ECMA-262 v6, 23.1.1.1) */
565BUILTIN_ROUTINE (ECMA_BUILTIN_ID_WEAKSET,
566                 ECMA_OBJECT_TYPE_FUNCTION,
567                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
568                 true,
569                 weakset)
570
571#endif /* ENABLED (JERRY_ES2015_BUILTIN_WEAKSET) */
572
573#if ENABLED (JERRY_ES2015_BUILTIN_PROXY)
574/* The Proxy routine (ECMA-262 v6, 26.2.1) */
575BUILTIN_ROUTINE (ECMA_BUILTIN_ID_PROXY,
576                 ECMA_OBJECT_TYPE_FUNCTION,
577                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
578                 true,
579                 proxy)
580#endif /* ENABLED (JERRY_ES2015_BUILTIN_PROXY) */
581
582#if ENABLED (JERRY_ES2015)
583
584/* Intrinsic hidden builtin object  */
585BUILTIN (ECMA_BUILTIN_ID_INTRINSIC_OBJECT,
586         ECMA_OBJECT_TYPE_GENERAL,
587         ECMA_BUILTIN_ID__COUNT,
588         true,
589         intrinsic)
590
591/* The Array.prototype[@@unscopables] object */
592BUILTIN (ECMA_BUILTIN_ID_ARRAY_PROTOTYPE_UNSCOPABLES,
593         ECMA_OBJECT_TYPE_GENERAL,
594         ECMA_BUILTIN_ID__COUNT,
595         true,
596         array_prototype_unscopables)
597
598/* The Symbol prototype object (ECMA-262 v6, 19.4.2.7) */
599BUILTIN (ECMA_BUILTIN_ID_SYMBOL_PROTOTYPE,
600         ECMA_OBJECT_TYPE_GENERAL,
601         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
602         true,
603         symbol_prototype)
604
605/* The Symbol routine (ECMA-262 v6, 19.4.2.1) */
606BUILTIN_ROUTINE (ECMA_BUILTIN_ID_SYMBOL,
607                 ECMA_OBJECT_TYPE_FUNCTION,
608                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
609                 true,
610                 symbol)
611
612/* The %IteratorPrototype% object (ECMA-262 v6, 25.1.2) */
613BUILTIN (ECMA_BUILTIN_ID_ITERATOR_PROTOTYPE,
614         ECMA_OBJECT_TYPE_GENERAL,
615         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
616         true,
617         iterator_prototype)
618
619/* The %ArrayIteratorPrototype% object (ECMA-262 v6, 22.1.5.2) */
620BUILTIN (ECMA_BUILTIN_ID_ARRAY_ITERATOR_PROTOTYPE,
621         ECMA_OBJECT_TYPE_GENERAL,
622         ECMA_BUILTIN_ID_ITERATOR_PROTOTYPE,
623         true,
624         array_iterator_prototype)
625
626/* The %StringIteratorPrototype% object (ECMA-262 v6, 22.1.5.2) */
627BUILTIN (ECMA_BUILTIN_ID_STRING_ITERATOR_PROTOTYPE,
628         ECMA_OBJECT_TYPE_GENERAL,
629         ECMA_BUILTIN_ID_ITERATOR_PROTOTYPE,
630         true,
631         string_iterator_prototype)
632
633/* The %(GeneratorFunction)% object */
634BUILTIN_ROUTINE (ECMA_BUILTIN_ID_GENERATOR_FUNCTION,
635                 ECMA_OBJECT_TYPE_FUNCTION,
636                 ECMA_BUILTIN_ID_FUNCTION,
637                 true,
638                 generator_function)
639
640/* The %(Generator)% object */
641BUILTIN (ECMA_BUILTIN_ID_GENERATOR,
642         ECMA_OBJECT_TYPE_GENERAL,
643         ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
644         true,
645         generator)
646
647/* The %(Generator).prototype% object */
648BUILTIN (ECMA_BUILTIN_ID_GENERATOR_PROTOTYPE,
649         ECMA_OBJECT_TYPE_GENERAL,
650         ECMA_BUILTIN_ID_ITERATOR_PROTOTYPE,
651         true,
652         generator_prototype)
653
654#if ENABLED (JERRY_ES2015_BUILTIN_SET)
655/* The %SetIteratorPrototype% object (ECMA-262 v6, 23.2.5.2) */
656BUILTIN (ECMA_BUILTIN_ID_SET_ITERATOR_PROTOTYPE,
657         ECMA_OBJECT_TYPE_GENERAL,
658         ECMA_BUILTIN_ID_ITERATOR_PROTOTYPE,
659         true,
660         set_iterator_prototype)
661#endif /* ENABLED (JERRY_ES2015_BUILTIN_SET) */
662
663#if ENABLED (JERRY_ES2015_BUILTIN_MAP)
664/* The %MapIteratorPrototype% object (ECMA-262 v6, 23.1.5.2) */
665BUILTIN (ECMA_BUILTIN_ID_MAP_ITERATOR_PROTOTYPE,
666         ECMA_OBJECT_TYPE_GENERAL,
667         ECMA_BUILTIN_ID_ITERATOR_PROTOTYPE,
668         true,
669         map_iterator_prototype)
670#endif /* ENABLED (JERRY_ES2015_BUILTIN_SET) */
671#endif /* ENABLED (JERRY_ES2015) */
672
673#if ENABLED (JERRY_ES2015_BUILTIN_DATAVIEW)
674/* The DataView prototype object (ECMA-262 v6, 24.2.3.1) */
675BUILTIN (ECMA_BUILTIN_ID_DATAVIEW_PROTOTYPE,
676         ECMA_OBJECT_TYPE_GENERAL,
677         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
678         true,
679         dataview_prototype)
680
681/* The DataView routine (ECMA-262 v6, 24.2.2.1) */
682BUILTIN_ROUTINE (ECMA_BUILTIN_ID_DATAVIEW,
683                 ECMA_OBJECT_TYPE_FUNCTION,
684                 ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
685                 true,
686                 dataview)
687#endif /* ENABLED (JERRY_ES2015_BUILTIN_DATAVIEW */
688
689/* The Global object (15.1) */
690BUILTIN (ECMA_BUILTIN_ID_GLOBAL,
691         ECMA_OBJECT_TYPE_GENERAL,
692         ECMA_BUILTIN_ID_OBJECT_PROTOTYPE, /* Implementation-dependent */
693         true,
694         global)
695
696#undef BUILTIN
697