Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index d9c7a82276cfed24c89d8474ed3e4bbbb03a1afa..97833e074d0e28b03296d18f79534e6056259605 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -621,24 +621,30 @@ enum InstanceType { |
JS_MESSAGE_OBJECT_TYPE, |
- JS_VALUE_TYPE, // FIRST_NON_CALLABLE_OBJECT_TYPE, FIRST_JS_RECEIVER_TYPE |
+ // All the following types are subtypes of JSReceiver, which corresponds to |
+ // objects in the JS sense. The first and the last type in this range are |
+ // the two forms of function. This organization enables using the same |
+ // compares for checking the JS_RECEIVER/SPEC_OBJECT range and the |
+ // NONCALLABLE_JS_OBJECT range. |
+ JS_FUNCTION_PROXY_TYPE, // FIRST_JS_RECEIVER_TYPE, FIRST_JS_PROXY_TYPE |
+ JS_PROXY_TYPE, // LAST_JS_PROXY_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_PROXY_TYPE, |
JS_WEAK_MAP_TYPE, |
- JS_REGEXP_TYPE, // LAST_NONCALLABLE_SPEC_OBJECT_TYPE |
+ JS_REGEXP_TYPE, |
- JS_FUNCTION_TYPE, // FIRST_CALLABLE_SPEC_OBJECT_TYPE |
- JS_FUNCTION_PROXY_TYPE, // LAST_CALLABLE_SPEC_OBJECT_TYPE |
+ JS_FUNCTION_TYPE, // LAST_JS_OBJECT_TYPE, LAST_JS_RECEIVER_TYPE |
// Pseudo-types |
FIRST_TYPE = 0x0, |
- LAST_TYPE = JS_FUNCTION_PROXY_TYPE, |
+ LAST_TYPE = JS_FUNCTION_TYPE, |
INVALID_TYPE = FIRST_TYPE - 1, |
FIRST_NONSTRING_TYPE = MAP_TYPE, |
// Boundaries for testing for an external array. |
@@ -651,17 +657,23 @@ enum InstanceType { |
// are not continuous in this enum! The enum ranges instead reflect the |
// external class names, where proxies are treated as either ordinary objects, |
// or functions. |
- FIRST_JS_RECEIVER_TYPE = JS_VALUE_TYPE, |
+ FIRST_JS_RECEIVER_TYPE = JS_FUNCTION_PROXY_TYPE, |
LAST_JS_RECEIVER_TYPE = LAST_TYPE, |
+ // Boundaries for testing the types represented as JSObject |
+ FIRST_JS_OBJECT_TYPE = JS_VALUE_TYPE, |
+ LAST_JS_OBJECT_TYPE = LAST_TYPE, |
+ // Boundaries for testing the types represented as JSProxy |
+ FIRST_JS_PROXY_TYPE = JS_FUNCTION_PROXY_TYPE, |
+ LAST_JS_PROXY_TYPE = JS_PROXY_TYPE, |
+ // Boundaries for testing whether the type is a JavaScript object. |
+ FIRST_SPEC_OBJECT_TYPE = FIRST_JS_RECEIVER_TYPE, |
+ LAST_SPEC_OBJECT_TYPE = LAST_JS_RECEIVER_TYPE, |
// Boundaries for testing the types for which typeof is "object". |
- FIRST_NONCALLABLE_SPEC_OBJECT_TYPE = JS_VALUE_TYPE, |
+ FIRST_NONCALLABLE_SPEC_OBJECT_TYPE = JS_PROXY_TYPE, |
LAST_NONCALLABLE_SPEC_OBJECT_TYPE = JS_REGEXP_TYPE, |
- // Boundaries for testing the types for which typeof is "function". |
- FIRST_CALLABLE_SPEC_OBJECT_TYPE = JS_FUNCTION_TYPE, |
- LAST_CALLABLE_SPEC_OBJECT_TYPE = JS_FUNCTION_PROXY_TYPE, |
- // Boundaries for testing whether the type is a JavaScript object. |
- FIRST_SPEC_OBJECT_TYPE = FIRST_NONCALLABLE_SPEC_OBJECT_TYPE, |
- LAST_SPEC_OBJECT_TYPE = LAST_CALLABLE_SPEC_OBJECT_TYPE |
+ // Note that the types for which typeof is "function" are not continuous. |
+ // Define this so that we can put assertions on discrete checks. |
+ NUM_OF_CALLABLE_SPEC_OBJECT_TYPES = 2 |
}; |
static const int kExternalArrayTypeCount = LAST_EXTERNAL_ARRAY_TYPE - |