@@ -486,7 +486,6 @@ jerry_parse (const jerry_char_t *source_p, /**< script source */
486
486
487
487
ecma_extended_object_t * ext_object_p = (ecma_extended_object_t * ) object_p ;
488
488
ext_object_p -> u .cls .type = ECMA_OBJECT_CLASS_SCRIPT ;
489
- ext_object_p -> u .cls .u2 .id = LIT_MAGIC_STRING_SCRIPT_UL ;
490
489
ECMA_SET_INTERNAL_VALUE_POINTER (ext_object_p -> u .cls .u3 .value , bytecode_data_p );
491
490
492
491
return ecma_make_object_value (object_p );
@@ -1254,6 +1253,75 @@ jerry_value_get_type (const jerry_value_t value) /**< input value to check */
1254
1253
}
1255
1254
} /* jerry_value_get_type */
1256
1255
1256
+ /**
1257
+ * Used by jerry_object_get_type to get the type of class objects
1258
+ */
1259
+ static const uint8_t jerry_class_object_type [] =
1260
+ {
1261
+ /* These objects require custom property resolving. */
1262
+ JERRY_OBJECT_TYPE_STRING , /**< type of ECMA_OBJECT_CLASS_STRING */
1263
+ JERRY_OBJECT_TYPE_ARGUMENTS , /**< type of ECMA_OBJECT_CLASS_ARGUMENTS */
1264
+ #if JERRY_BUILTIN_TYPEDARRAY
1265
+ JERRY_OBJECT_TYPE_TYPEDARRAY , /**< type of ECMA_OBJECT_CLASS_TYPEDARRAY */
1266
+ #endif /* JERRY_BUILTIN_TYPEDARRAY */
1267
+
1268
+ /* These objects are marked by Garbage Collector. */
1269
+ #if JERRY_ESNEXT
1270
+ JERRY_OBJECT_TYPE_GENERATOR , /**< type of ECMA_OBJECT_CLASS_GENERATOR */
1271
+ JERRY_OBJECT_TYPE_GENERATOR , /**< type of ECMA_OBJECT_CLASS_ASYNC_GENERATOR */
1272
+ JERRY_OBJECT_TYPE_ITERATOR , /**< type of ECMA_OBJECT_CLASS_ARRAY_ITERATOR */
1273
+ JERRY_OBJECT_TYPE_ITERATOR , /**< type of ECMA_OBJECT_CLASS_SET_ITERATOR */
1274
+ JERRY_OBJECT_TYPE_ITERATOR , /**< type of ECMA_OBJECT_CLASS_MAP_ITERATOR */
1275
+ #if JERRY_BUILTIN_REGEXP
1276
+ JERRY_OBJECT_TYPE_GENERIC , /**< type of ECMA_OBJECT_CLASS_REGEXP_STRING_ITERATOR */
1277
+ #endif /* JERRY_BUILTIN_REGEXP */
1278
+ #endif /* JERRY_ESNEXT */
1279
+ #if JERRY_MODULE_SYSTEM
1280
+ JERRY_OBJECT_TYPE_MODULE , /**< type of ECMA_OBJECT_CLASS_MODULE */
1281
+ #endif
1282
+ #if JERRY_BUILTIN_PROMISE
1283
+ JERRY_OBJECT_TYPE_GENERIC , /**< type of ECMA_OBJECT_CLASS_PROMISE */
1284
+ JERRY_OBJECT_TYPE_GENERIC , /**< type of ECMA_OBJECT_CLASS_PROMISE_CAPABILITY */
1285
+ #endif /* JERRY_BUILTIN_PROMISE */
1286
+ #if JERRY_BUILTIN_DATAVIEW
1287
+ JERRY_OBJECT_TYPE_GENERIC , /**< type of ECMA_OBJECT_CLASS_DATAVIEW */
1288
+ #endif /* JERRY_BUILTIN_DATAVIEW */
1289
+ #if JERRY_BUILTIN_CONTAINER
1290
+ JERRY_OBJECT_TYPE_CONTAINER , /**< type of ECMA_OBJECT_CLASS_CONTAINER */
1291
+ #endif /* JERRY_BUILTIN_CONTAINER */
1292
+
1293
+ /* Normal objects. */
1294
+ JERRY_OBJECT_TYPE_BOOLEAN , /**< type of ECMA_OBJECT_CLASS_BOOLEAN */
1295
+ JERRY_OBJECT_TYPE_NUMBER , /**< type of ECMA_OBJECT_CLASS_NUMBER */
1296
+ JERRY_OBJECT_TYPE_GENERIC , /**< type of ECMA_OBJECT_CLASS_ERROR */
1297
+ JERRY_OBJECT_TYPE_GENERIC , /**< type of ECMA_OBJECT_CLASS_INTERNAL_OBJECT */
1298
+ #if JERRY_PARSER
1299
+ JERRY_OBJECT_TYPE_SCRIPT , /**< type of ECMA_OBJECT_CLASS_SCRIPT */
1300
+ #endif /* JERRY_PARSER */
1301
+ #if JERRY_BUILTIN_DATE
1302
+ JERRY_OBJECT_TYPE_DATE , /**< type of ECMA_OBJECT_CLASS_DATE */
1303
+ #endif /* JERRY_BUILTIN_DATE */
1304
+ #if JERRY_BUILTIN_REGEXP
1305
+ JERRY_OBJECT_TYPE_REGEXP , /**< type of ECMA_OBJECT_CLASS_REGEXP */
1306
+ #endif /* JERRY_BUILTIN_REGEXP */
1307
+ #if JERRY_ESNEXT
1308
+ JERRY_OBJECT_TYPE_SYMBOL , /**< type of ECMA_OBJECT_CLASS_SYMBOL */
1309
+ JERRY_OBJECT_TYPE_ITERATOR , /**< type of ECMA_OBJECT_CLASS_STRING_ITERATOR */
1310
+ #endif /* JERRY_ESNEXT */
1311
+ #if JERRY_BUILTIN_TYPEDARRAY
1312
+ JERRY_OBJECT_TYPE_GENERIC , /**< type of ECMA_OBJECT_CLASS_ARRAY_BUFFER */
1313
+ #endif /* JERRY_BUILTIN_TYPEDARRAY */
1314
+ #if JERRY_BUILTIN_BIGINT
1315
+ JERRY_OBJECT_TYPE_BIGINT , /**< type of ECMA_OBJECT_CLASS_BIGINT */
1316
+ #endif /* JERRY_BUILTIN_BIGINT */
1317
+ #if JERRY_BUILTIN_WEAKREF
1318
+ JERRY_OBJECT_TYPE_WEAKREF , /**< type of ECMA_OBJECT_CLASS_WEAKREF */
1319
+ #endif /* JERRY_BUILTIN_WEAKREF */
1320
+ };
1321
+
1322
+ JERRY_STATIC_ASSERT (sizeof (jerry_class_object_type ) == ECMA_OBJECT_CLASS__MAX ,
1323
+ jerry_class_object_type_must_have_object_class_max_elements );
1324
+
1257
1325
/**
1258
1326
* Get the object type of the given value
1259
1327
*
@@ -1293,101 +1361,8 @@ jerry_object_get_type (const jerry_value_t value) /**< input value to check */
1293
1361
#endif /* JERRY_ESNEXT */
1294
1362
case ECMA_OBJECT_TYPE_CLASS :
1295
1363
{
1296
- switch (ext_obj_p -> u .cls .type )
1297
- {
1298
- case ECMA_OBJECT_CLASS_ARGUMENTS :
1299
- {
1300
- return JERRY_OBJECT_TYPE_ARGUMENTS ;
1301
- }
1302
- #if JERRY_BUILTIN_TYPEDARRAY
1303
- case ECMA_OBJECT_CLASS_TYPEDARRAY :
1304
- case ECMA_OBJECT_CLASS_TYPEDARRAY_WITH_INFO :
1305
- {
1306
- return JERRY_OBJECT_TYPE_TYPEDARRAY ;
1307
- }
1308
- #endif /* JERRY_BUILTIN_TYPEDARRAY */
1309
- #if JERRY_PARSER
1310
- case ECMA_OBJECT_CLASS_SCRIPT :
1311
- {
1312
- return JERRY_OBJECT_TYPE_SCRIPT ;
1313
- }
1314
- #endif /* JERRY_PARSER */
1315
- case ECMA_OBJECT_CLASS_BOOLEAN :
1316
- {
1317
- return JERRY_OBJECT_TYPE_BOOLEAN ;
1318
- }
1319
- case ECMA_OBJECT_CLASS_STRING :
1320
- {
1321
- return JERRY_OBJECT_TYPE_STRING ;
1322
- }
1323
- case ECMA_OBJECT_CLASS_NUMBER :
1324
- {
1325
- return JERRY_OBJECT_TYPE_NUMBER ;
1326
- }
1327
- #if JERRY_BUILTIN_DATE
1328
- case ECMA_OBJECT_CLASS_DATE :
1329
- {
1330
- return JERRY_OBJECT_TYPE_DATE ;
1331
- }
1332
- #endif /* JERRY_BUILTIN_DATE */
1333
- #if JERRY_BUILTIN_REGEXP
1334
- case ECMA_OBJECT_CLASS_REGEXP :
1335
- {
1336
- return JERRY_OBJECT_TYPE_REGEXP ;
1337
- }
1338
- #endif /* JERRY_BUILTIN_REGEXP */
1339
- #if JERRY_ESNEXT
1340
- case ECMA_OBJECT_CLASS_SYMBOL :
1341
- {
1342
- return JERRY_OBJECT_TYPE_SYMBOL ;
1343
- }
1344
- case ECMA_OBJECT_CLASS_GENERATOR :
1345
- case ECMA_OBJECT_CLASS_ASYNC_GENERATOR :
1346
- {
1347
- return JERRY_OBJECT_TYPE_GENERATOR ;
1348
- }
1349
- case ECMA_OBJECT_CLASS_ARRAY_ITERATOR :
1350
- #if JERRY_BUILTIN_SET
1351
- case ECMA_OBJECT_CLASS_SET_ITERATOR :
1352
- #endif /* JERRY_BUILTIN_SET */
1353
- #if JERRY_BUILTIN_MAP
1354
- case ECMA_OBJECT_CLASS_MAP_ITERATOR :
1355
- #endif /* JERRY_BUILTIN_MAP */
1356
- case ECMA_OBJECT_CLASS_STRING_ITERATOR :
1357
- {
1358
- return JERRY_OBJECT_TYPE_ITERATOR ;
1359
- }
1360
- #endif /* JERRY_ESNEXT */
1361
- #if JERRY_MODULE_SYSTEM
1362
- case ECMA_OBJECT_CLASS_MODULE :
1363
- {
1364
- return JERRY_OBJECT_TYPE_MODULE ;
1365
- }
1366
- #endif /* JERRY_MODULE_SYSTEM */
1367
- #if JERRY_BUILTIN_CONTAINER
1368
- case ECMA_OBJECT_CLASS_CONTAINER :
1369
- {
1370
- return JERRY_OBJECT_TYPE_CONTAINER ;
1371
- }
1372
- #endif /* JERRY_BUILTIN_CONTAINER */
1373
- #if JERRY_BUILTIN_BIGINT
1374
- case ECMA_OBJECT_CLASS_BIGINT :
1375
- {
1376
- return JERRY_OBJECT_TYPE_BIGINT ;
1377
- }
1378
- #endif /* JERRY_BUILTIN_BIGINT */
1379
- #if JERRY_BUILTIN_WEAKREF
1380
- case ECMA_OBJECT_CLASS_WEAKREF :
1381
- {
1382
- return JERRY_OBJECT_TYPE_WEAKREF ;
1383
- }
1384
- #endif /* JERRY_BUILTIN_WEAKREF */
1385
- default :
1386
- {
1387
- break ;
1388
- }
1389
- }
1390
- break ;
1364
+ JERRY_ASSERT (ext_obj_p -> u .cls .type < ECMA_OBJECT_CLASS__MAX );
1365
+ return jerry_class_object_type [ext_obj_p -> u .cls .type ];
1391
1366
}
1392
1367
default :
1393
1368
{
@@ -3386,7 +3361,6 @@ jerry_set_internal_property (const jerry_value_t obj_val, /**< object value */
3386
3361
{
3387
3362
ecma_extended_object_t * container_p = (ecma_extended_object_t * ) internal_object_p ;
3388
3363
container_p -> u .cls .type = ECMA_OBJECT_CLASS_INTERNAL_OBJECT ;
3389
- container_p -> u .cls .u2 .id = LIT_MAGIC_STRING_OBJECT_UL ;
3390
3364
}
3391
3365
3392
3366
value_p -> value = ecma_make_object_value (internal_object_p );
@@ -6108,7 +6082,7 @@ jerry_get_container_type (const jerry_value_t value) /**< the container object *
6108
6082
6109
6083
if (ecma_object_class_is (obj_p , ECMA_OBJECT_CLASS_CONTAINER ))
6110
6084
{
6111
- switch (((ecma_extended_object_t * ) obj_p )-> u .cls .u2 .id )
6085
+ switch (((ecma_extended_object_t * ) obj_p )-> u .cls .u2 .container_id )
6112
6086
{
6113
6087
#if JERRY_BUILTIN_MAP
6114
6088
case LIT_MAGIC_STRING_MAP_UL :
0 commit comments