| Index: src/objects.h
|
| ===================================================================
|
| --- src/objects.h (revision 3515)
|
| +++ src/objects.h (working copy)
|
| @@ -204,14 +204,13 @@
|
| // instance_type is JS_OBJECT_TYPE.
|
| //
|
| // The names of the string instance types are intended to systematically
|
| -// mirror their encoding in the instance_type field of the map. The length
|
| -// (SHORT, MEDIUM, or LONG) is always mentioned. The default encoding is
|
| -// considered TWO_BYTE. It is not mentioned in the name. ASCII encoding is
|
| -// mentioned explicitly in the name. Likewise, the default representation is
|
| -// considered sequential. It is not mentioned in the name. The other
|
| -// representations (eg, CONS, EXTERNAL) are explicitly mentioned.
|
| -// Finally, the string is either a SYMBOL_TYPE (if it is a symbol) or a
|
| -// STRING_TYPE (if it is not a symbol).
|
| +// mirror their encoding in the instance_type field of the map. The default
|
| +// encoding is considered TWO_BYTE. It is not mentioned in the name. ASCII
|
| +// encoding is mentioned explicitly in the name. Likewise, the default
|
| +// representation is considered sequential. It is not mentioned in the
|
| +// name. The other representations (eg, CONS, EXTERNAL) are explicitly
|
| +// mentioned. Finally, the string is either a SYMBOL_TYPE (if it is a
|
| +// symbol) or a STRING_TYPE (if it is not a symbol).
|
| //
|
| // NOTE: The following things are some that depend on the string types having
|
| // instance_types that are less than those of all other types:
|
| @@ -237,11 +236,11 @@
|
| V(PRIVATE_EXTERNAL_ASCII_STRING_TYPE) \
|
| \
|
| V(MAP_TYPE) \
|
| - V(HEAP_NUMBER_TYPE) \
|
| - V(FIXED_ARRAY_TYPE) \
|
| V(CODE_TYPE) \
|
| V(JS_GLOBAL_PROPERTY_CELL_TYPE) \
|
| V(ODDBALL_TYPE) \
|
| + \
|
| + V(HEAP_NUMBER_TYPE) \
|
| V(PROXY_TYPE) \
|
| V(BYTE_ARRAY_TYPE) \
|
| V(PIXEL_ARRAY_TYPE) \
|
| @@ -257,6 +256,7 @@
|
| V(EXTERNAL_FLOAT_ARRAY_TYPE) \
|
| V(FILLER_TYPE) \
|
| \
|
| + V(FIXED_ARRAY_TYPE) \
|
| V(ACCESSOR_INFO_TYPE) \
|
| V(ACCESS_CHECK_INFO_TYPE) \
|
| V(INTERCEPTOR_INFO_TYPE) \
|
| @@ -418,6 +418,7 @@
|
|
|
|
|
| enum InstanceType {
|
| + // String types.
|
| SYMBOL_TYPE = kSymbolTag | kSeqStringTag,
|
| ASCII_SYMBOL_TYPE = kAsciiStringTag | kSymbolTag | kSeqStringTag,
|
| CONS_SYMBOL_TYPE = kSymbolTag | kConsStringTag,
|
| @@ -433,56 +434,66 @@
|
| EXTERNAL_ASCII_STRING_TYPE = kAsciiStringTag | kExternalStringTag,
|
| PRIVATE_EXTERNAL_ASCII_STRING_TYPE = EXTERNAL_ASCII_STRING_TYPE,
|
|
|
| - MAP_TYPE = kNotStringTag,
|
| - HEAP_NUMBER_TYPE,
|
| - FIXED_ARRAY_TYPE,
|
| + // Objects allocated in their own spaces (never in new space).
|
| + MAP_TYPE = kNotStringTag, // FIRST_NONSTRING_TYPE
|
| CODE_TYPE,
|
| ODDBALL_TYPE,
|
| JS_GLOBAL_PROPERTY_CELL_TYPE,
|
| +
|
| + // "Data", objects that cannot contain non-map-word pointers to heap
|
| + // objects.
|
| + HEAP_NUMBER_TYPE,
|
| PROXY_TYPE,
|
| BYTE_ARRAY_TYPE,
|
| PIXEL_ARRAY_TYPE,
|
| - EXTERNAL_BYTE_ARRAY_TYPE,
|
| + EXTERNAL_BYTE_ARRAY_TYPE, // FIRST_EXTERNAL_ARRAY_TYPE
|
| EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE,
|
| EXTERNAL_SHORT_ARRAY_TYPE,
|
| EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE,
|
| EXTERNAL_INT_ARRAY_TYPE,
|
| EXTERNAL_UNSIGNED_INT_ARRAY_TYPE,
|
| - EXTERNAL_FLOAT_ARRAY_TYPE,
|
| - FILLER_TYPE,
|
| - SMI_TYPE,
|
| + EXTERNAL_FLOAT_ARRAY_TYPE, // LAST_EXTERNAL_ARRAY_TYPE
|
| + FILLER_TYPE, // LAST_DATA_TYPE
|
|
|
| + // Structs.
|
| ACCESSOR_INFO_TYPE,
|
| ACCESS_CHECK_INFO_TYPE,
|
| INTERCEPTOR_INFO_TYPE,
|
| - SHARED_FUNCTION_INFO_TYPE,
|
| CALL_HANDLER_INFO_TYPE,
|
| FUNCTION_TEMPLATE_INFO_TYPE,
|
| OBJECT_TEMPLATE_INFO_TYPE,
|
| SIGNATURE_INFO_TYPE,
|
| TYPE_SWITCH_INFO_TYPE,
|
| + SCRIPT_TYPE,
|
| #ifdef ENABLE_DEBUGGER_SUPPORT
|
| DEBUG_INFO_TYPE,
|
| BREAK_POINT_INFO_TYPE,
|
| #endif
|
| - SCRIPT_TYPE,
|
|
|
| - JS_VALUE_TYPE,
|
| + FIXED_ARRAY_TYPE,
|
| + SHARED_FUNCTION_INFO_TYPE,
|
| +
|
| + JS_VALUE_TYPE, // FIRST_JS_OBJECT_TYPE
|
| JS_OBJECT_TYPE,
|
| JS_CONTEXT_EXTENSION_OBJECT_TYPE,
|
| JS_GLOBAL_OBJECT_TYPE,
|
| JS_BUILTINS_OBJECT_TYPE,
|
| JS_GLOBAL_PROXY_TYPE,
|
| JS_ARRAY_TYPE,
|
| - JS_REGEXP_TYPE,
|
| + JS_REGEXP_TYPE, // LAST_JS_OBJECT_TYPE
|
|
|
| JS_FUNCTION_TYPE,
|
|
|
| // Pseudo-types
|
| - FIRST_NONSTRING_TYPE = MAP_TYPE,
|
| FIRST_TYPE = 0x0,
|
| + LAST_TYPE = JS_FUNCTION_TYPE,
|
| INVALID_TYPE = FIRST_TYPE - 1,
|
| - LAST_TYPE = JS_FUNCTION_TYPE,
|
| + FIRST_NONSTRING_TYPE = MAP_TYPE,
|
| + // Boundaries for testing for an external array.
|
| + FIRST_EXTERNAL_ARRAY_TYPE = EXTERNAL_BYTE_ARRAY_TYPE,
|
| + LAST_EXTERNAL_ARRAY_TYPE = EXTERNAL_FLOAT_ARRAY_TYPE,
|
| + // Boundary for promotion to old data space/old pointer space.
|
| + LAST_DATA_TYPE = FILLER_TYPE,
|
| // Boundaries for testing the type is a JavaScript "object". Note that
|
| // function objects are not counted as objects, even though they are
|
| // implemented as such; only values whose typeof is "object" are included.
|
|
|