@@ -560,8 +560,9 @@ jerry_parse (const jerry_char_t *source_p, /**< script source */
560
560
ecma_object_t * object_p = ecma_create_object (NULL , sizeof (ecma_extended_object_t ), ECMA_OBJECT_TYPE_CLASS );
561
561
562
562
ecma_extended_object_t * ext_object_p = (ecma_extended_object_t * ) object_p ;
563
- ext_object_p -> u .class_prop .class_id = LIT_MAGIC_STRING_SCRIPT_UL ;
564
- ECMA_SET_INTERNAL_VALUE_POINTER (ext_object_p -> u .class_prop .u .value , bytecode_data_p );
563
+ ext_object_p -> u .cls .type = ECMA_OBJECT_CLASS_SCRIPT ;
564
+ ext_object_p -> u .cls .u2 .id = LIT_MAGIC_STRING_SCRIPT_UL ;
565
+ ECMA_SET_INTERNAL_VALUE_POINTER (ext_object_p -> u .cls .u3 .value , bytecode_data_p );
565
566
566
567
return ecma_make_object_value (object_p );
567
568
#else /* !JERRY_PARSER */
@@ -689,13 +690,13 @@ jerry_run (const jerry_value_t func_val) /**< function to run */
689
690
690
691
ecma_extended_object_t * ext_object_p = (ecma_extended_object_t * ) object_p ;
691
692
692
- if (ext_object_p -> u .class_prop . class_id != LIT_MAGIC_STRING_SCRIPT_UL )
693
+ if (ext_object_p -> u .cls . type != ECMA_OBJECT_CLASS_SCRIPT )
693
694
{
694
695
return jerry_throw (ecma_raise_type_error (ECMA_ERR_MSG (wrong_args_msg_p )));
695
696
}
696
697
697
698
const ecma_compiled_code_t * bytecode_data_p ;
698
- bytecode_data_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_compiled_code_t , ext_object_p -> u .class_prop . u .value );
699
+ bytecode_data_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_compiled_code_t , ext_object_p -> u .cls . u3 .value );
699
700
700
701
JERRY_ASSERT (CBC_FUNCTION_GET_TYPE (bytecode_data_p -> status_flags ) == CBC_FUNCTION_SCRIPT );
701
702
@@ -790,7 +791,7 @@ jerry_module_evaluate (const jerry_value_t module_val) /**< root module */
790
791
return jerry_throw (ecma_raise_type_error (ECMA_ERR_MSG (error_not_module_p )));
791
792
}
792
793
793
- if (module_p -> header .u .class_prop . extra_info != JERRY_MODULE_STATE_LINKED )
794
+ if (module_p -> header .u .cls . u1 . module_state != JERRY_MODULE_STATE_LINKED )
794
795
{
795
796
return jerry_throw (ecma_raise_type_error (ECMA_ERR_MSG ("Module must be in linked state" )));
796
797
}
@@ -822,7 +823,7 @@ jerry_module_get_state (const jerry_value_t module_val) /**< module object */
822
823
return JERRY_MODULE_STATE_INVALID ;
823
824
}
824
825
825
- return (jerry_module_state_t ) module_p -> header .u .class_prop . extra_info ;
826
+ return (jerry_module_state_t ) module_p -> header .u .cls . u1 . module_state ;
826
827
#else /* !JERRY_MODULE_SYSTEM */
827
828
JERRY_UNUSED (module_val );
828
829
@@ -936,7 +937,7 @@ jerry_module_get_namespace (const jerry_value_t module_val) /**< module */
936
937
937
938
if (module_p -> namespace_object_p == NULL )
938
939
{
939
- if (module_p -> header .u .class_prop . extra_info != JERRY_MODULE_STATE_EVALUATED )
940
+ if (module_p -> header .u .cls . u1 . module_state != JERRY_MODULE_STATE_EVALUATED )
940
941
{
941
942
return jerry_throw (ecma_raise_range_error (ECMA_ERR_MSG ("Namespace object has not been created yet" )));
942
943
}
@@ -1365,110 +1366,93 @@ jerry_object_get_type (const jerry_value_t value) /**< input value to check */
1365
1366
return JERRY_OBJECT_TYPE_PROXY ;
1366
1367
}
1367
1368
#endif /* JERRY_ESNEXT */
1368
- case ECMA_OBJECT_TYPE_PSEUDO_ARRAY :
1369
+ case ECMA_OBJECT_TYPE_CLASS :
1369
1370
{
1370
- switch (ext_obj_p -> u .pseudo_array .type )
1371
+ switch (ext_obj_p -> u .cls .type )
1371
1372
{
1372
- case ECMA_PSEUDO_ARRAY_ARGUMENTS :
1373
+ case ECMA_OBJECT_CLASS_ARGUMENTS :
1373
1374
{
1374
1375
return JERRY_OBJECT_TYPE_ARGUMENTS ;
1375
1376
}
1376
1377
#if JERRY_BUILTIN_TYPEDARRAY
1377
- case ECMA_PSEUDO_ARRAY_TYPEDARRAY :
1378
- case ECMA_PSEUDO_ARRAY_TYPEDARRAY_WITH_INFO :
1378
+ case ECMA_OBJECT_CLASS_TYPEDARRAY :
1379
+ case ECMA_OBJECT_CLASS_TYPEDARRAY_WITH_INFO :
1379
1380
{
1380
1381
return JERRY_OBJECT_TYPE_TYPEDARRAY ;
1381
1382
}
1382
1383
#endif /* JERRY_BUILTIN_TYPEDARRAY */
1383
- #if JERRY_ESNEXT
1384
- case ECMA_PSEUDO_STRING_ITERATOR :
1385
- case ECMA_PSEUDO_ARRAY_ITERATOR :
1386
- #if JERRY_BUILTIN_MAP
1387
- case ECMA_PSEUDO_MAP_ITERATOR :
1388
- #endif /* JERRY_BUILTIN_MAP */
1389
- #if JERRY_BUILTIN_SET
1390
- case ECMA_PSEUDO_SET_ITERATOR :
1391
- #endif /* JERRY_BUILTIN_SET */
1392
- {
1393
- return JERRY_OBJECT_TYPE_ITERATOR ;
1394
- }
1395
- #endif /* JERRY_ESNEXT */
1396
- }
1397
- break ;
1398
- }
1399
- case ECMA_OBJECT_TYPE_CLASS :
1400
- {
1401
- switch (ext_obj_p -> u .class_prop .class_id )
1402
- {
1403
- case LIT_MAGIC_STRING_SCRIPT_UL :
1384
+ #if JERRY_PARSER
1385
+ case ECMA_OBJECT_CLASS_SCRIPT :
1404
1386
{
1405
1387
return JERRY_OBJECT_TYPE_SCRIPT ;
1406
1388
}
1407
- #if JERRY_MODULE_SYSTEM
1408
- case LIT_MAGIC_STRING_MODULE_UL :
1409
- {
1410
- return JERRY_OBJECT_TYPE_MODULE ;
1411
- }
1412
- #endif /* JERRY_MODULE_SYSTEM */
1413
- case LIT_MAGIC_STRING_ARGUMENTS_UL :
1414
- {
1415
- return JERRY_OBJECT_TYPE_ARGUMENTS ;
1416
- }
1417
- case LIT_MAGIC_STRING_BOOLEAN_UL :
1389
+ #endif /* JERRY_PARSER */
1390
+ case ECMA_OBJECT_CLASS_BOOLEAN :
1418
1391
{
1419
1392
return JERRY_OBJECT_TYPE_BOOLEAN ;
1420
1393
}
1421
- case LIT_MAGIC_STRING_DATE_UL :
1394
+ case ECMA_OBJECT_CLASS_STRING :
1422
1395
{
1423
- return JERRY_OBJECT_TYPE_DATE ;
1396
+ return JERRY_OBJECT_TYPE_STRING ;
1424
1397
}
1425
- case LIT_MAGIC_STRING_NUMBER_UL :
1398
+ case ECMA_OBJECT_CLASS_NUMBER :
1426
1399
{
1427
1400
return JERRY_OBJECT_TYPE_NUMBER ;
1428
1401
}
1429
- case LIT_MAGIC_STRING_REGEXP_UL :
1402
+ #if JERRY_BUILTIN_DATE
1403
+ case ECMA_OBJECT_CLASS_DATE :
1430
1404
{
1431
- return JERRY_OBJECT_TYPE_REGEXP ;
1405
+ return JERRY_OBJECT_TYPE_DATE ;
1432
1406
}
1433
- case LIT_MAGIC_STRING_STRING_UL :
1407
+ #endif /* JERRY_BUILTIN_DATE */
1408
+ #if JERRY_BUILTIN_REGEXP
1409
+ case ECMA_OBJECT_CLASS_REGEXP :
1434
1410
{
1435
- return JERRY_OBJECT_TYPE_STRING ;
1411
+ return JERRY_OBJECT_TYPE_REGEXP ;
1436
1412
}
1413
+ #endif /* JERRY_BUILTIN_REGEXP */
1437
1414
#if JERRY_ESNEXT
1438
- case LIT_MAGIC_STRING_SYMBOL_UL :
1415
+ case ECMA_OBJECT_CLASS_SYMBOL :
1439
1416
{
1440
1417
return JERRY_OBJECT_TYPE_SYMBOL ;
1441
1418
}
1442
- case LIT_MAGIC_STRING_GENERATOR_UL :
1419
+ case ECMA_OBJECT_CLASS_GENERATOR :
1420
+ case ECMA_OBJECT_CLASS_ASYNC_GENERATOR :
1443
1421
{
1444
1422
return JERRY_OBJECT_TYPE_GENERATOR ;
1445
1423
}
1424
+ case ECMA_OBJECT_CLASS_ARRAY_ITERATOR :
1425
+ #if JERRY_BUILTIN_SET
1426
+ case ECMA_OBJECT_CLASS_SET_ITERATOR :
1427
+ #endif /* JERRY_BUILTIN_SET */
1428
+ #if JERRY_BUILTIN_MAP
1429
+ case ECMA_OBJECT_CLASS_MAP_ITERATOR :
1430
+ #endif /* JERRY_BUILTIN_MAP */
1431
+ case ECMA_OBJECT_CLASS_STRING_ITERATOR :
1432
+ {
1433
+ return JERRY_OBJECT_TYPE_ITERATOR ;
1434
+ }
1446
1435
#endif /* JERRY_ESNEXT */
1447
- #if JERRY_BUILTIN_BIGINT
1448
- case LIT_MAGIC_STRING_BIGINT_UL :
1436
+ #if JERRY_MODULE_SYSTEM
1437
+ case ECMA_OBJECT_CLASS_MODULE :
1449
1438
{
1450
- return JERRY_OBJECT_TYPE_BIGINT ;
1439
+ return JERRY_OBJECT_TYPE_MODULE ;
1451
1440
}
1452
- #endif /* JERRY_BUILTIN_BIGINT */
1441
+ #endif /* JERRY_MODULE_SYSTEM */
1453
1442
#if JERRY_BUILTIN_CONTAINER
1454
- #if JERRY_BUILTIN_MAP
1455
- case LIT_MAGIC_STRING_MAP_UL :
1456
- #endif /* JERRY_BUILTIN_MAP */
1457
- #if JERRY_BUILTIN_SET
1458
- case LIT_MAGIC_STRING_SET_UL :
1459
- #endif /* JERRY_BUILTIN_SET */
1460
- #if JERRY_BUILTIN_WEAKMAP
1461
- case LIT_MAGIC_STRING_WEAKMAP_UL :
1462
- #endif /* JERRY_BUILTIN_WEAKMAP */
1463
- #if JERRY_BUILTIN_WEAKSET
1464
- case LIT_MAGIC_STRING_WEAKSET_UL :
1465
- #endif /* JERRY_BUILTIN_WEAKSET */
1443
+ case ECMA_OBJECT_CLASS_CONTAINER :
1466
1444
{
1467
1445
return JERRY_OBJECT_TYPE_CONTAINER ;
1468
1446
}
1469
1447
#endif /* JERRY_BUILTIN_CONTAINER */
1448
+ #if JERRY_BUILTIN_BIGINT
1449
+ case ECMA_OBJECT_CLASS_BIGINT :
1450
+ {
1451
+ return JERRY_OBJECT_TYPE_BIGINT ;
1452
+ }
1453
+ #endif /* JERRY_BUILTIN_BIGINT */
1470
1454
#if JERRY_BUILTIN_WEAKREF
1471
- case LIT_MAGIC_STRING_WEAKREF_UL :
1455
+ case ECMA_OBJECT_CLASS_WEAKREF :
1472
1456
{
1473
1457
return JERRY_OBJECT_TYPE_WEAKREF ;
1474
1458
}
@@ -1574,30 +1558,30 @@ jerry_iterator_get_type (const jerry_value_t value) /**< input value to check */
1574
1558
ecma_object_t * obj_p = ecma_get_object_from_value (value );
1575
1559
ecma_extended_object_t * ext_obj_p = (ecma_extended_object_t * ) obj_p ;
1576
1560
1577
- if (ecma_get_object_type (obj_p ) == ECMA_OBJECT_TYPE_PSEUDO_ARRAY )
1561
+ if (ecma_get_object_type (obj_p ) == ECMA_OBJECT_TYPE_CLASS )
1578
1562
{
1579
- switch (ext_obj_p -> u .pseudo_array .type )
1563
+ switch (ext_obj_p -> u .cls .type )
1580
1564
{
1581
- case ECMA_PSEUDO_ARRAY_ITERATOR :
1565
+ case ECMA_OBJECT_CLASS_ARRAY_ITERATOR :
1582
1566
{
1583
1567
return JERRY_ITERATOR_TYPE_ARRAY ;
1584
1568
}
1585
- case ECMA_PSEUDO_STRING_ITERATOR :
1569
+ #if JERRY_BUILTIN_SET
1570
+ case ECMA_OBJECT_CLASS_SET_ITERATOR :
1586
1571
{
1587
- return JERRY_ITERATOR_TYPE_STRING ;
1572
+ return JERRY_ITERATOR_TYPE_SET ;
1588
1573
}
1574
+ #endif /* JERRY_BUILTIN_SET */
1589
1575
#if JERRY_BUILTIN_MAP
1590
- case ECMA_PSEUDO_MAP_ITERATOR :
1576
+ case ECMA_OBJECT_CLASS_MAP_ITERATOR :
1591
1577
{
1592
1578
return JERRY_ITERATOR_TYPE_MAP ;
1593
1579
}
1594
1580
#endif /* JERRY_BUILTIN_MAP */
1595
- #if JERRY_BUILTIN_SET
1596
- case ECMA_PSEUDO_SET_ITERATOR :
1581
+ case ECMA_OBJECT_CLASS_STRING_ITERATOR :
1597
1582
{
1598
- return JERRY_ITERATOR_TYPE_SET ;
1583
+ return JERRY_ITERATOR_TYPE_STRING ;
1599
1584
}
1600
- #endif /* JERRY_BUILTIN_SET */
1601
1585
default :
1602
1586
{
1603
1587
break ;
@@ -3476,9 +3460,8 @@ jerry_set_internal_property (const jerry_value_t obj_val, /**< object value */
3476
3460
ECMA_OBJECT_TYPE_CLASS );
3477
3461
{
3478
3462
ecma_extended_object_t * container_p = (ecma_extended_object_t * ) internal_object_p ;
3479
- container_p -> u .class_prop .class_id = LIT_INTERNAL_MAGIC_STRING_INTERNAL_OBJECT ;
3480
- container_p -> u .class_prop .extra_info = 0 ;
3481
- container_p -> u .class_prop .u .length = 0 ;
3463
+ container_p -> u .cls .type = ECMA_OBJECT_CLASS_INTERNAL_OBJECT ;
3464
+ container_p -> u .cls .u2 .id = LIT_MAGIC_STRING_OBJECT_UL ;
3482
3465
}
3483
3466
3484
3467
value_p -> value = ecma_make_object_value (internal_object_p );
@@ -4061,10 +4044,13 @@ bool jerry_object_is_valid_foreach (ecma_object_t *object_p) /**< object to test
4061
4044
if (object_type == ECMA_OBJECT_TYPE_CLASS )
4062
4045
{
4063
4046
ecma_extended_object_t * ext_object_p = (ecma_extended_object_t * ) object_p ;
4064
- switch (ext_object_p -> u .class_prop . class_id )
4047
+ switch (ext_object_p -> u .cls . type )
4065
4048
{
4066
4049
/* An object's internal property object should not be iterable by foreach. */
4067
- case LIT_INTERNAL_MAGIC_STRING_INTERNAL_OBJECT : return false;
4050
+ case ECMA_OBJECT_CLASS_INTERNAL_OBJECT :
4051
+ {
4052
+ return false;
4053
+ }
4068
4054
}
4069
4055
}
4070
4056
@@ -5667,7 +5653,7 @@ jerry_get_dataview_buffer (const jerry_value_t value, /**< DataView to get the a
5667
5653
5668
5654
if (byte_length != NULL )
5669
5655
{
5670
- * byte_length = dataview_p -> header .u .class_prop . u .length ;
5656
+ * byte_length = dataview_p -> header .u .cls . u3 .length ;
5671
5657
}
5672
5658
5673
5659
ecma_object_t * arraybuffer_p = dataview_p -> buffer_p ;
@@ -6195,11 +6181,9 @@ jerry_get_container_type (const jerry_value_t value) /**< the container object *
6195
6181
{
6196
6182
ecma_object_t * obj_p = ecma_get_object_from_value (value );
6197
6183
6198
- if (ecma_get_object_type (obj_p ) == ECMA_OBJECT_TYPE_CLASS )
6184
+ if (ecma_object_class_is (obj_p , ECMA_OBJECT_CLASS_CONTAINER ) )
6199
6185
{
6200
- uint16_t type = ((ecma_extended_object_t * ) obj_p )-> u .class_prop .class_id ;
6201
-
6202
- switch (type )
6186
+ switch (((ecma_extended_object_t * ) obj_p )-> u .cls .u2 .id )
6203
6187
{
6204
6188
#if JERRY_BUILTIN_MAP
6205
6189
case LIT_MAGIC_STRING_MAP_UL :
0 commit comments