summaryrefslogtreecommitdiff
path: root/deps/v8/src/contexts.h
diff options
context:
space:
mode:
authorAli Ijaz Sheikh <ofrobots@google.com>2015-11-30 21:22:40 -0800
committerAli Ijaz Sheikh <ofrobots@google.com>2015-12-04 00:06:01 -0800
commit8a43a3d7619fde59f0d1f2fad05d8ae7d1732b02 (patch)
tree8698af91526d0eac90840dcba1e5b565160105c4 /deps/v8/src/contexts.h
parent8a2acd4cc9807510786b4b6f7ad3a947aeb3a14c (diff)
downloadnode-new-8a43a3d7619fde59f0d1f2fad05d8ae7d1732b02.tar.gz
deps: upgrade V8 to 4.7.80.24
Pick up the latest branch head for V8 4.7: https://github.com/v8/v8/commit/be169f8df059040e6a53ec1dd4579d8bca2167b5 Full change history for the 4.7 branch: https://chromium.googlesource.com/v8/v8.git/+log/branch-heads/4.7 V8 blog post about what is new on V8 4.7: http://v8project.blogspot.de/2015/10/v8-release-47.html PR-URL: https://github.com/nodejs/node/pull/4106 Reviewed-By: bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: targos - Michaƫl Zasso <mic.besace@gmail.com> Reviewed-By: rvagg - Rod Vagg <rod@vagg.org>
Diffstat (limited to 'deps/v8/src/contexts.h')
-rw-r--r--deps/v8/src/contexts.h426
1 files changed, 213 insertions, 213 deletions
diff --git a/deps/v8/src/contexts.h b/deps/v8/src/contexts.h
index 9e6fc0e4f5..1ca572576e 100644
--- a/deps/v8/src/contexts.h
+++ b/deps/v8/src/contexts.h
@@ -73,150 +73,190 @@ enum BindingFlags {
// must always be allocated via Heap::AllocateContext() or
// Factory::NewContext.
+#define NATIVE_CONTEXT_INTRINSIC_FUNCTIONS(V) \
+ V(CONCAT_ITERABLE_TO_ARRAY_INDEX, JSFunction, concat_iterable_to_array) \
+ V(GET_TEMPLATE_CALL_SITE_INDEX, JSFunction, get_template_call_site) \
+ V(MAKE_RANGE_ERROR_INDEX, JSFunction, make_range_error) \
+ V(MAKE_TYPE_ERROR_INDEX, JSFunction, make_type_error) \
+ V(NON_NUMBER_TO_NUMBER_INDEX, JSFunction, non_number_to_number) \
+ V(REFLECT_APPLY_INDEX, JSFunction, reflect_apply) \
+ V(REFLECT_CONSTRUCT_INDEX, JSFunction, reflect_construct) \
+ V(SPREAD_ARGUMENTS_INDEX, JSFunction, spread_arguments) \
+ V(SPREAD_ITERABLE_INDEX, JSFunction, spread_iterable) \
+ V(TO_NUMBER_FUN_INDEX, JSFunction, to_number_fun)
+
+
+#define NATIVE_CONTEXT_JS_BUILTINS(V) \
+ V(APPLY_PREPARE_BUILTIN_INDEX, JSFunction, apply_prepare_builtin) \
+ V(CONCAT_ITERABLE_TO_ARRAY_BUILTIN_INDEX, JSFunction, \
+ concat_iterable_to_array_builtin) \
+ V(REFLECT_APPLY_PREPARE_BUILTIN_INDEX, JSFunction, \
+ reflect_apply_prepare_builtin) \
+ V(REFLECT_CONSTRUCT_PREPARE_BUILTIN_INDEX, JSFunction, \
+ reflect_construct_prepare_builtin)
+
+
+#define NATIVE_CONTEXT_IMPORTED_FIELDS(V) \
+ V(ARRAY_CONCAT_INDEX, JSFunction, array_concat) \
+ V(ARRAY_POP_INDEX, JSFunction, array_pop) \
+ V(ARRAY_PUSH_INDEX, JSFunction, array_push) \
+ V(ARRAY_SHIFT_INDEX, JSFunction, array_shift) \
+ V(ARRAY_SPLICE_INDEX, JSFunction, array_splice) \
+ V(ARRAY_SLICE_INDEX, JSFunction, array_slice) \
+ V(ARRAY_UNSHIFT_INDEX, JSFunction, array_unshift) \
+ V(ARRAY_VALUES_ITERATOR_INDEX, JSFunction, array_values_iterator) \
+ V(CREATE_DATE_FUN_INDEX, JSFunction, create_date_fun) \
+ V(DERIVED_GET_TRAP_INDEX, JSFunction, derived_get_trap) \
+ V(DERIVED_HAS_TRAP_INDEX, JSFunction, derived_has_trap) \
+ V(DERIVED_SET_TRAP_INDEX, JSFunction, derived_set_trap) \
+ V(ERROR_FUNCTION_INDEX, JSFunction, error_function) \
+ V(EVAL_ERROR_FUNCTION_INDEX, JSFunction, eval_error_function) \
+ V(GET_STACK_TRACE_LINE_INDEX, JSFunction, get_stack_trace_line_fun) \
+ V(GLOBAL_EVAL_FUN_INDEX, JSFunction, global_eval_fun) \
+ V(JSON_SERIALIZE_ADAPTER_INDEX, JSFunction, json_serialize_adapter) \
+ V(MAKE_ERROR_FUNCTION_INDEX, JSFunction, make_error_function) \
+ V(MAP_DELETE_METHOD_INDEX, JSFunction, map_delete) \
+ V(MAP_FROM_ARRAY_INDEX, JSFunction, map_from_array) \
+ V(MAP_GET_METHOD_INDEX, JSFunction, map_get) \
+ V(MAP_HAS_METHOD_INDEX, JSFunction, map_has) \
+ V(MAP_SET_METHOD_INDEX, JSFunction, map_set) \
+ V(MESSAGE_GET_COLUMN_NUMBER_INDEX, JSFunction, message_get_column_number) \
+ V(MESSAGE_GET_LINE_NUMBER_INDEX, JSFunction, message_get_line_number) \
+ V(MESSAGE_GET_SOURCE_LINE_INDEX, JSFunction, message_get_source_line) \
+ V(NATIVE_OBJECT_GET_NOTIFIER_INDEX, JSFunction, native_object_get_notifier) \
+ V(NATIVE_OBJECT_NOTIFIER_PERFORM_CHANGE, JSFunction, \
+ native_object_notifier_perform_change) \
+ V(NATIVE_OBJECT_OBSERVE_INDEX, JSFunction, native_object_observe) \
+ V(NO_SIDE_EFFECT_TO_STRING_FUN_INDEX, JSFunction, \
+ no_side_effect_to_string_fun) \
+ V(OBJECT_VALUE_OF, JSFunction, object_value_of) \
+ V(OBJECT_TO_STRING, JSFunction, object_to_string) \
+ V(OBJECT_DEFINE_OWN_PROPERTY_INDEX, JSFunction, object_define_own_property) \
+ V(OBJECT_GET_OWN_PROPERTY_DESCROPTOR_INDEX, JSFunction, \
+ object_get_own_property_descriptor) \
+ V(OBSERVERS_BEGIN_SPLICE_INDEX, JSFunction, observers_begin_perform_splice) \
+ V(OBSERVERS_END_SPLICE_INDEX, JSFunction, observers_end_perform_splice) \
+ V(OBSERVERS_ENQUEUE_SPLICE_INDEX, JSFunction, observers_enqueue_splice) \
+ V(OBSERVERS_NOTIFY_CHANGE_INDEX, JSFunction, observers_notify_change) \
+ V(PROMISE_CATCH_INDEX, JSFunction, promise_catch) \
+ V(PROMISE_CHAIN_INDEX, JSFunction, promise_chain) \
+ V(PROMISE_CREATE_INDEX, JSFunction, promise_create) \
+ V(PROMISE_HAS_USER_DEFINED_REJECT_HANDLER_INDEX, JSFunction, \
+ promise_has_user_defined_reject_handler) \
+ V(PROMISE_REJECT_INDEX, JSFunction, promise_reject) \
+ V(PROMISE_RESOLVE_INDEX, JSFunction, promise_resolve) \
+ V(PROMISE_THEN_INDEX, JSFunction, promise_then) \
+ V(PROXY_ENUMERATE_INDEX, JSFunction, proxy_enumerate) \
+ V(RANGE_ERROR_FUNCTION_INDEX, JSFunction, range_error_function) \
+ V(REFERENCE_ERROR_FUNCTION_INDEX, JSFunction, reference_error_function) \
+ V(SET_ADD_METHOD_INDEX, JSFunction, set_add) \
+ V(SET_DELETE_METHOD_INDEX, JSFunction, set_delete) \
+ V(SET_FROM_ARRAY_INDEX, JSFunction, set_from_array) \
+ V(SET_HAS_METHOD_INDEX, JSFunction, set_has) \
+ V(STACK_OVERFLOW_BOILERPLATE_INDEX, JSObject, stack_overflow_boilerplate) \
+ V(SYNTAX_ERROR_FUNCTION_INDEX, JSFunction, syntax_error_function) \
+ V(TO_COMPLETE_PROPERTY_DESCRIPTOR_INDEX, JSFunction, \
+ to_complete_property_descriptor) \
+ V(TO_DETAIL_STRING_FUN_INDEX, JSFunction, to_detail_string_fun) \
+ V(TYPE_ERROR_FUNCTION_INDEX, JSFunction, type_error_function) \
+ V(URI_ERROR_FUNCTION_INDEX, JSFunction, uri_error_function) \
+ NATIVE_CONTEXT_JS_BUILTINS(V)
+
#define NATIVE_CONTEXT_FIELDS(V) \
V(GLOBAL_PROXY_INDEX, JSObject, global_proxy_object) \
- V(SECURITY_TOKEN_INDEX, Object, security_token) \
+ V(EMBEDDER_DATA_INDEX, FixedArray, embedder_data) \
+ /* Below is alpha-sorted */ \
+ V(ALLOW_CODE_GEN_FROM_STRINGS_INDEX, Object, allow_code_gen_from_strings) \
+ V(ARRAY_BUFFER_FUN_INDEX, JSFunction, array_buffer_fun) \
+ V(ARRAY_BUFFER_MAP_INDEX, Map, array_buffer_map) \
+ V(ARRAY_FUNCTION_INDEX, JSFunction, array_function) \
+ V(BOOL16X8_FUNCTION_INDEX, JSFunction, bool16x8_function) \
+ V(BOOL32X4_FUNCTION_INDEX, JSFunction, bool32x4_function) \
+ V(BOOL8X16_FUNCTION_INDEX, JSFunction, bool8x16_function) \
V(BOOLEAN_FUNCTION_INDEX, JSFunction, boolean_function) \
- V(NUMBER_FUNCTION_INDEX, JSFunction, number_function) \
- V(STRING_FUNCTION_INDEX, JSFunction, string_function) \
- V(STRING_FUNCTION_PROTOTYPE_MAP_INDEX, Map, string_function_prototype_map) \
- V(SYMBOL_FUNCTION_INDEX, JSFunction, symbol_function) \
+ V(BOUND_FUNCTION_WITH_CONSTRUCTOR_MAP_INDEX, Map, \
+ bound_function_with_constructor_map) \
+ V(BOUND_FUNCTION_WITHOUT_CONSTRUCTOR_MAP_INDEX, Map, \
+ bound_function_without_constructor_map) \
+ V(CALL_AS_CONSTRUCTOR_DELEGATE_INDEX, JSFunction, \
+ call_as_constructor_delegate) \
+ V(CALL_AS_FUNCTION_DELEGATE_INDEX, JSFunction, call_as_function_delegate) \
+ V(CONTEXT_EXTENSION_FUNCTION_INDEX, JSFunction, context_extension_function) \
+ V(DATA_VIEW_FUN_INDEX, JSFunction, data_view_fun) \
+ V(ERROR_MESSAGE_FOR_CODE_GEN_FROM_STRINGS_INDEX, Object, \
+ error_message_for_code_gen_from_strings) \
+ V(EXTRAS_EXPORTS_OBJECT_INDEX, JSObject, extras_binding_object) \
+ V(EXTRAS_UTILS_OBJECT_INDEX, JSObject, extras_utils_object) \
+ V(FAST_ALIASED_ARGUMENTS_MAP_INDEX, Map, fast_aliased_arguments_map) \
+ V(FLOAT32_ARRAY_FUN_INDEX, JSFunction, float32_array_fun) \
V(FLOAT32X4_FUNCTION_INDEX, JSFunction, float32x4_function) \
- V(INT32X4_FUNCTION_INDEX, JSFunction, int32x4_function) \
- V(BOOL32X4_FUNCTION_INDEX, JSFunction, bool32x4_function) \
+ V(FLOAT64_ARRAY_FUN_INDEX, JSFunction, float64_array_fun) \
+ V(FUNCTION_CACHE_INDEX, ObjectHashTable, function_cache) \
+ V(GENERATOR_OBJECT_PROTOTYPE_MAP_INDEX, Map, generator_object_prototype_map) \
+ V(INITIAL_ARRAY_PROTOTYPE_INDEX, JSObject, initial_array_prototype) \
+ V(INITIAL_OBJECT_PROTOTYPE_INDEX, JSObject, initial_object_prototype) \
+ V(INT16_ARRAY_FUN_INDEX, JSFunction, int16_array_fun) \
V(INT16X8_FUNCTION_INDEX, JSFunction, int16x8_function) \
- V(BOOL16X8_FUNCTION_INDEX, JSFunction, bool16x8_function) \
+ V(INT32_ARRAY_FUN_INDEX, JSFunction, int32_array_fun) \
+ V(INT32X4_FUNCTION_INDEX, JSFunction, int32x4_function) \
+ V(INT8_ARRAY_FUN_INDEX, JSFunction, int8_array_fun) \
V(INT8X16_FUNCTION_INDEX, JSFunction, int8x16_function) \
- V(BOOL8X16_FUNCTION_INDEX, JSFunction, bool8x16_function) \
- V(OBJECT_FUNCTION_INDEX, JSFunction, object_function) \
- V(JS_OBJECT_STRONG_MAP_INDEX, Map, js_object_strong_map) \
V(INTERNAL_ARRAY_FUNCTION_INDEX, JSFunction, internal_array_function) \
- V(ARRAY_FUNCTION_INDEX, JSFunction, array_function) \
+ V(ITERATOR_RESULT_MAP_INDEX, Map, iterator_result_map) \
V(JS_ARRAY_MAPS_INDEX, Object, js_array_maps) \
V(JS_ARRAY_STRONG_MAPS_INDEX, Object, js_array_strong_maps) \
+ V(JS_MAP_FUN_INDEX, JSFunction, js_map_fun) \
+ V(JS_MAP_MAP_INDEX, Map, js_map_map) \
+ V(JS_OBJECT_STRONG_MAP_INDEX, Map, js_object_strong_map) \
+ V(JS_SET_FUN_INDEX, JSFunction, js_set_fun) \
+ V(JS_SET_MAP_INDEX, Map, js_set_map) \
+ V(MAP_CACHE_INDEX, Object, map_cache) \
+ V(MAP_ITERATOR_MAP_INDEX, Map, map_iterator_map) \
+ V(STRING_ITERATOR_MAP_INDEX, Map, string_iterator_map) \
+ V(MESSAGE_LISTENERS_INDEX, JSObject, message_listeners) \
+ V(NATIVES_UTILS_OBJECT_INDEX, Object, natives_utils_object) \
+ V(NORMALIZED_MAP_CACHE_INDEX, Object, normalized_map_cache) \
+ V(NUMBER_FUNCTION_INDEX, JSFunction, number_function) \
+ V(OBJECT_FUNCTION_INDEX, JSFunction, object_function) \
+ V(OBJECT_FUNCTION_PROTOTYPE_MAP_INDEX, Map, object_function_prototype_map) \
+ V(OPAQUE_REFERENCE_FUNCTION_INDEX, JSFunction, opaque_reference_function) \
V(REGEXP_FUNCTION_INDEX, JSFunction, regexp_function) \
- V(INITIAL_OBJECT_PROTOTYPE_INDEX, JSObject, initial_object_prototype) \
- V(INITIAL_ARRAY_PROTOTYPE_INDEX, JSObject, initial_array_prototype) \
- V(EMBEDDER_DATA_INDEX, FixedArray, embedder_data) \
- V(CREATE_DATE_FUN_INDEX, JSFunction, create_date_fun) \
- V(TO_NUMBER_FUN_INDEX, JSFunction, to_number_fun) \
- V(TO_STRING_FUN_INDEX, JSFunction, to_string_fun) \
- V(TO_DETAIL_STRING_FUN_INDEX, JSFunction, to_detail_string_fun) \
- V(NO_SIDE_EFFECT_TO_STRING_FUN_INDEX, JSFunction, \
- no_side_effect_to_string_fun) \
- V(TO_INTEGER_FUN_INDEX, JSFunction, to_integer_fun) \
- V(TO_LENGTH_FUN_INDEX, JSFunction, to_length_fun) \
- V(GLOBAL_EVAL_FUN_INDEX, JSFunction, global_eval_fun) \
- V(ARRAY_BUFFER_FUN_INDEX, JSFunction, array_buffer_fun) \
+ V(REGEXP_RESULT_MAP_INDEX, Map, regexp_result_map) \
+ V(RUNTIME_CONTEXT_INDEX, Context, runtime_context) \
+ V(SCRIPT_CONTEXT_TABLE_INDEX, ScriptContextTable, script_context_table) \
+ V(SCRIPT_FUNCTION_INDEX, JSFunction, script_function) \
+ V(SECURITY_TOKEN_INDEX, Object, security_token) \
+ V(SET_ITERATOR_MAP_INDEX, Map, set_iterator_map) \
V(SHARED_ARRAY_BUFFER_FUN_INDEX, JSFunction, shared_array_buffer_fun) \
- V(ARRAY_BUFFER_MAP_INDEX, Map, array_buffer_map) \
- V(UINT8_ARRAY_FUN_INDEX, JSFunction, uint8_array_fun) \
- V(INT8_ARRAY_FUN_INDEX, JSFunction, int8_array_fun) \
- V(UINT16_ARRAY_FUN_INDEX, JSFunction, uint16_array_fun) \
- V(INT16_ARRAY_FUN_INDEX, JSFunction, int16_array_fun) \
- V(UINT32_ARRAY_FUN_INDEX, JSFunction, uint32_array_fun) \
- V(INT32_ARRAY_FUN_INDEX, JSFunction, int32_array_fun) \
- V(FLOAT32_ARRAY_FUN_INDEX, JSFunction, float32_array_fun) \
- V(FLOAT64_ARRAY_FUN_INDEX, JSFunction, float64_array_fun) \
- V(UINT8_CLAMPED_ARRAY_FUN_INDEX, JSFunction, uint8_clamped_array_fun) \
- V(DATA_VIEW_FUN_INDEX, JSFunction, data_view_fun) \
+ V(SLOPPY_ARGUMENTS_MAP_INDEX, Map, sloppy_arguments_map) \
V(SLOPPY_FUNCTION_MAP_INDEX, Map, sloppy_function_map) \
+ V(SLOPPY_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX, Map, \
+ sloppy_function_without_prototype_map) \
V(SLOPPY_FUNCTION_WITH_READONLY_PROTOTYPE_MAP_INDEX, Map, \
sloppy_function_with_readonly_prototype_map) \
+ V(SLOPPY_GENERATOR_FUNCTION_MAP_INDEX, Map, sloppy_generator_function_map) \
+ V(SLOW_ALIASED_ARGUMENTS_MAP_INDEX, Map, slow_aliased_arguments_map) \
+ V(STRICT_ARGUMENTS_MAP_INDEX, Map, strict_arguments_map) \
V(STRICT_FUNCTION_MAP_INDEX, Map, strict_function_map) \
- V(STRONG_FUNCTION_MAP_INDEX, Map, strong_function_map) \
- V(SLOPPY_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX, Map, \
- sloppy_function_without_prototype_map) \
V(STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX, Map, \
strict_function_without_prototype_map) \
- V(STRONG_CONSTRUCTOR_MAP_INDEX, Map, strong_constructor_map) \
- V(BOUND_FUNCTION_MAP_INDEX, Map, bound_function_map) \
- V(REGEXP_RESULT_MAP_INDEX, Map, regexp_result_map) \
- V(SLOPPY_ARGUMENTS_MAP_INDEX, Map, sloppy_arguments_map) \
- V(FAST_ALIASED_ARGUMENTS_MAP_INDEX, Map, fast_aliased_arguments_map) \
- V(SLOW_ALIASED_ARGUMENTS_MAP_INDEX, Map, slow_aliased_arguments_map) \
- V(STRICT_ARGUMENTS_MAP_INDEX, Map, strict_arguments_map) \
- V(MESSAGE_LISTENERS_INDEX, JSObject, message_listeners) \
- V(GET_STACK_TRACE_LINE_INDEX, JSFunction, get_stack_trace_line_fun) \
- V(FUNCTION_CACHE_INDEX, ObjectHashTable, function_cache) \
- V(NORMALIZED_MAP_CACHE_INDEX, Object, normalized_map_cache) \
- V(RUNTIME_CONTEXT_INDEX, Context, runtime_context) \
- V(CALL_AS_FUNCTION_DELEGATE_INDEX, JSFunction, call_as_function_delegate) \
- V(CALL_AS_CONSTRUCTOR_DELEGATE_INDEX, JSFunction, \
- call_as_constructor_delegate) \
- V(SCRIPT_FUNCTION_INDEX, JSFunction, script_function) \
- V(OPAQUE_REFERENCE_FUNCTION_INDEX, JSFunction, opaque_reference_function) \
- V(CONTEXT_EXTENSION_FUNCTION_INDEX, JSFunction, context_extension_function) \
- V(MAP_CACHE_INDEX, Object, map_cache) \
- V(STRONG_MAP_CACHE_INDEX, Object, strong_map_cache) \
- V(ALLOW_CODE_GEN_FROM_STRINGS_INDEX, Object, allow_code_gen_from_strings) \
- V(ERROR_MESSAGE_FOR_CODE_GEN_FROM_STRINGS_INDEX, Object, \
- error_message_for_code_gen_from_strings) \
- V(ERROR_FUNCTION_INDEX, JSFunction, error_function) \
- V(EVAL_ERROR_FUNCTION_INDEX, JSFunction, eval_error_function) \
- V(RANGE_ERROR_FUNCTION_INDEX, JSFunction, range_error_function) \
- V(REFERENCE_ERROR_FUNCTION_INDEX, JSFunction, reference_error_function) \
- V(SYNTAX_ERROR_FUNCTION_INDEX, JSFunction, syntax_error_function) \
- V(TYPE_ERROR_FUNCTION_INDEX, JSFunction, type_error_function) \
- V(URI_ERROR_FUNCTION_INDEX, JSFunction, uri_error_function) \
- V(MAKE_ERROR_FUNCTION_INDEX, JSFunction, make_error_function) \
- V(PROMISE_STATUS_INDEX, Symbol, promise_status) \
- V(PROMISE_VALUE_INDEX, Symbol, promise_value) \
- V(PROMISE_CREATE_INDEX, JSFunction, promise_create) \
- V(PROMISE_RESOLVE_INDEX, JSFunction, promise_resolve) \
- V(PROMISE_REJECT_INDEX, JSFunction, promise_reject) \
- V(PROMISE_CHAIN_INDEX, JSFunction, promise_chain) \
- V(PROMISE_CATCH_INDEX, JSFunction, promise_catch) \
- V(PROMISE_THEN_INDEX, JSFunction, promise_then) \
- V(PROMISE_HAS_USER_DEFINED_REJECT_HANDLER_INDEX, JSFunction, \
- promise_has_user_defined_reject_handler) \
- V(TO_COMPLETE_PROPERTY_DESCRIPTOR_INDEX, JSFunction, \
- to_complete_property_descriptor) \
- V(OBJECT_DEFINE_OWN_PROPERTY_INDEX, JSFunction, object_define_own_property) \
- V(OBJECT_GET_OWN_PROPERTY_DESCROPTOR_INDEX, JSFunction, \
- object_get_own_property_descriptor) \
- V(MESSAGE_GET_LINE_NUMBER_INDEX, JSFunction, message_get_line_number) \
- V(MESSAGE_GET_COLUMN_NUMBER_INDEX, JSFunction, message_get_column_number) \
- V(MESSAGE_GET_SOURCE_LINE_INDEX, JSFunction, message_get_source_line) \
- V(STACK_OVERFLOW_BOILERPLATE_INDEX, JSObject, stack_overflow_boilerplate) \
- V(JSON_SERIALIZE_ADAPTER_INDEX, JSFunction, json_serialize_adapter) \
- V(DERIVED_HAS_TRAP_INDEX, JSFunction, derived_has_trap) \
- V(DERIVED_GET_TRAP_INDEX, JSFunction, derived_get_trap) \
- V(DERIVED_SET_TRAP_INDEX, JSFunction, derived_set_trap) \
- V(PROXY_ENUMERATE_INDEX, JSFunction, proxy_enumerate) \
- V(OBSERVERS_NOTIFY_CHANGE_INDEX, JSFunction, observers_notify_change) \
- V(OBSERVERS_ENQUEUE_SPLICE_INDEX, JSFunction, observers_enqueue_splice) \
- V(OBSERVERS_BEGIN_SPLICE_INDEX, JSFunction, observers_begin_perform_splice) \
- V(OBSERVERS_END_SPLICE_INDEX, JSFunction, observers_end_perform_splice) \
- V(NATIVE_OBJECT_OBSERVE_INDEX, JSFunction, native_object_observe) \
- V(NATIVE_OBJECT_GET_NOTIFIER_INDEX, JSFunction, native_object_get_notifier) \
- V(NATIVE_OBJECT_NOTIFIER_PERFORM_CHANGE, JSFunction, \
- native_object_notifier_perform_change) \
- V(SLOPPY_GENERATOR_FUNCTION_MAP_INDEX, Map, sloppy_generator_function_map) \
V(STRICT_GENERATOR_FUNCTION_MAP_INDEX, Map, strict_generator_function_map) \
+ V(STRING_FUNCTION_INDEX, JSFunction, string_function) \
+ V(STRING_FUNCTION_PROTOTYPE_MAP_INDEX, Map, string_function_prototype_map) \
+ V(STRONG_CONSTRUCTOR_MAP_INDEX, Map, strong_constructor_map) \
+ V(STRONG_FUNCTION_MAP_INDEX, Map, strong_function_map) \
V(STRONG_GENERATOR_FUNCTION_MAP_INDEX, Map, strong_generator_function_map) \
- V(GENERATOR_OBJECT_PROTOTYPE_MAP_INDEX, Map, generator_object_prototype_map) \
- V(ITERATOR_RESULT_MAP_INDEX, Map, iterator_result_map) \
- V(JS_MAP_FUN_INDEX, JSFunction, js_map_fun) \
- V(JS_MAP_MAP_INDEX, Map, js_map_map) \
- V(JS_SET_FUN_INDEX, JSFunction, js_set_fun) \
- V(JS_SET_MAP_INDEX, Map, js_set_map) \
- V(MAP_GET_METHOD_INDEX, JSFunction, map_get) \
- V(MAP_SET_METHOD_INDEX, JSFunction, map_set) \
- V(MAP_HAS_METHOD_INDEX, JSFunction, map_has) \
- V(MAP_DELETE_METHOD_INDEX, JSFunction, map_delete) \
- V(SET_ADD_METHOD_INDEX, JSFunction, set_add) \
- V(SET_HAS_METHOD_INDEX, JSFunction, set_has) \
- V(SET_DELETE_METHOD_INDEX, JSFunction, set_delete) \
- V(MAP_FROM_ARRAY_INDEX, JSFunction, map_from_array) \
- V(SET_FROM_ARRAY_INDEX, JSFunction, set_from_array) \
- V(MAP_ITERATOR_MAP_INDEX, Map, map_iterator_map) \
- V(SET_ITERATOR_MAP_INDEX, Map, set_iterator_map) \
- V(ARRAY_VALUES_ITERATOR_INDEX, JSFunction, array_values_iterator) \
- V(SCRIPT_CONTEXT_TABLE_INDEX, ScriptContextTable, script_context_table) \
- V(NATIVES_UTILS_OBJECT_INDEX, Object, natives_utils_object) \
- V(EXTRAS_EXPORTS_OBJECT_INDEX, JSObject, extras_binding_object)
-
+ V(STRONG_MAP_CACHE_INDEX, Object, strong_map_cache) \
+ V(SYMBOL_FUNCTION_INDEX, JSFunction, symbol_function) \
+ V(UINT16_ARRAY_FUN_INDEX, JSFunction, uint16_array_fun) \
+ V(UINT16X8_FUNCTION_INDEX, JSFunction, uint16x8_function) \
+ V(UINT32_ARRAY_FUN_INDEX, JSFunction, uint32_array_fun) \
+ V(UINT32X4_FUNCTION_INDEX, JSFunction, uint32x4_function) \
+ V(UINT8_ARRAY_FUN_INDEX, JSFunction, uint8_array_fun) \
+ V(UINT8_CLAMPED_ARRAY_FUN_INDEX, JSFunction, uint8_clamped_array_fun) \
+ V(UINT8X16_FUNCTION_INDEX, JSFunction, uint8x16_function) \
+ NATIVE_CONTEXT_INTRINSIC_FUNCTIONS(V) \
+ NATIVE_CONTEXT_IMPORTED_FIELDS(V)
// A table of all script contexts. Every loaded top-level script with top-level
// lexical declarations contributes its ScriptContext into this table.
@@ -226,28 +266,21 @@ enum BindingFlags {
class ScriptContextTable : public FixedArray {
public:
// Conversions.
- static ScriptContextTable* cast(Object* context) {
- DCHECK(context->IsScriptContextTable());
- return reinterpret_cast<ScriptContextTable*>(context);
- }
+ static inline ScriptContextTable* cast(Object* context);
struct LookupResult {
int context_index;
int slot_index;
VariableMode mode;
- VariableLocation location;
InitializationFlag init_flag;
MaybeAssignedFlag maybe_assigned_flag;
};
- int used() const { return Smi::cast(get(kUsedSlot))->value(); }
+ inline int used() const;
+ inline void set_used(int used);
- void set_used(int used) { set(kUsedSlot, Smi::FromInt(used)); }
-
- static Handle<Context> GetContext(Handle<ScriptContextTable> table, int i) {
- DCHECK(i < table->used());
- return Handle<Context>::cast(FixedArray::get(table, i + 1));
- }
+ static inline Handle<Context> GetContext(Handle<ScriptContextTable> table,
+ int i);
// Lookup a variable `name` in a ScriptContextTable.
// If it returns true, the variable is found and `result` contains
@@ -267,8 +300,9 @@ class ScriptContextTable : public FixedArray {
private:
static const int kUsedSlot = 0;
+ static const int kFirstContextSlot = kUsedSlot + 1;
static const int kFirstContextOffset =
- FixedArray::kHeaderSize + (kUsedSlot + 1) * kPointerSize;
+ FixedArray::kHeaderSize + kFirstContextSlot * kPointerSize;
DISALLOW_IMPLICIT_CONSTRUCTORS(ScriptContextTable);
};
@@ -301,8 +335,11 @@ class ScriptContextTable : public FixedArray {
// Dynamically declared variables/functions are also added
// to lazily allocated extension object. Context::Lookup
// searches the extension object for properties.
-// For global and block contexts, contains the respective
-// ScopeInfo.
+// For script and block contexts, contains the respective
+// ScopeInfo. For block contexts representing sloppy declaration
+// block scopes, it may also be a struct being a
+// SloppyBlockWithEvalContextExtension, pairing the ScopeInfo
+// with an extension object.
// For module contexts, points back to the respective JSModule.
//
// [ global_object ] A pointer to the global object. Provided for quick
@@ -323,10 +360,7 @@ class ScriptContextTable : public FixedArray {
class Context: public FixedArray {
public:
// Conversions.
- static Context* cast(Object* context) {
- DCHECK(context->IsContext());
- return reinterpret_cast<Context*>(context);
- }
+ static inline Context* cast(Object* context);
// The default context slot layout; indices are FixedArray slot indices.
enum {
@@ -362,35 +396,30 @@ class Context: public FixedArray {
};
// Direct slot access.
- JSFunction* closure() { return JSFunction::cast(get(CLOSURE_INDEX)); }
- void set_closure(JSFunction* closure) { set(CLOSURE_INDEX, closure); }
+ inline JSFunction* closure();
+ inline void set_closure(JSFunction* closure);
- Context* previous() {
- Object* result = unchecked_previous();
- DCHECK(IsBootstrappingOrValidParentContext(result, this));
- return reinterpret_cast<Context*>(result);
- }
- void set_previous(Context* context) { set(PREVIOUS_INDEX, context); }
+ inline Context* previous();
+ inline void set_previous(Context* context);
- bool has_extension() { return extension() != NULL; }
- Object* extension() { return get(EXTENSION_INDEX); }
- void set_extension(Object* object) { set(EXTENSION_INDEX, object); }
+ inline bool has_extension();
+ inline Object* extension();
+ inline void set_extension(Object* object);
+ JSObject* extension_object();
+ JSReceiver* extension_receiver();
+ ScopeInfo* scope_info();
+ String* catch_name();
- JSModule* module() { return JSModule::cast(get(EXTENSION_INDEX)); }
- void set_module(JSModule* module) { set(EXTENSION_INDEX, module); }
+ inline JSModule* module();
+ inline void set_module(JSModule* module);
// Get the context where var declarations will be hoisted to, which
// may be the context itself.
Context* declaration_context();
+ bool is_declaration_context();
- GlobalObject* global_object() {
- Object* result = get(GLOBAL_OBJECT_INDEX);
- DCHECK(IsBootstrappingOrGlobalObject(this->GetIsolate(), result));
- return reinterpret_cast<GlobalObject*>(result);
- }
- void set_global_object(GlobalObject* object) {
- set(GLOBAL_OBJECT_INDEX, object);
- }
+ inline GlobalObject* global_object();
+ inline void set_global_object(GlobalObject* object);
// Returns a JSGlobalProxy object or null.
JSObject* global_proxy();
@@ -408,39 +437,15 @@ class Context: public FixedArray {
// Predicates for context types. IsNativeContext is also defined on Object
// because we frequently have to know if arbitrary objects are natives
// contexts.
- bool IsNativeContext() {
- Map* map = this->map();
- return map == map->GetHeap()->native_context_map();
- }
- bool IsFunctionContext() {
- Map* map = this->map();
- return map == map->GetHeap()->function_context_map();
- }
- bool IsCatchContext() {
- Map* map = this->map();
- return map == map->GetHeap()->catch_context_map();
- }
- bool IsWithContext() {
- Map* map = this->map();
- return map == map->GetHeap()->with_context_map();
- }
- bool IsBlockContext() {
- Map* map = this->map();
- return map == map->GetHeap()->block_context_map();
- }
- bool IsModuleContext() {
- Map* map = this->map();
- return map == map->GetHeap()->module_context_map();
- }
- bool IsScriptContext() {
- Map* map = this->map();
- return map == map->GetHeap()->script_context_map();
- }
+ inline bool IsNativeContext();
+ inline bool IsFunctionContext();
+ inline bool IsCatchContext();
+ inline bool IsWithContext();
+ inline bool IsBlockContext();
+ inline bool IsModuleContext();
+ inline bool IsScriptContext();
- bool HasSameSecurityTokenAs(Context* that) {
- return this->global_object()->native_context()->security_token() ==
- that->global_object()->native_context()->security_token();
- }
+ inline bool HasSameSecurityTokenAs(Context* that);
// Initializes global variable bindings in given script context.
void InitializeGlobalSlots();
@@ -461,19 +466,16 @@ class Context: public FixedArray {
Handle<Object> ErrorMessageForCodeGenerationFromStrings();
+ static int ImportedFieldIndexForName(Handle<String> name);
+ static int IntrinsicIndexForName(Handle<String> name);
+
+ static bool IsJSBuiltin(Handle<Context> native_context,
+ Handle<JSFunction> function);
+
#define NATIVE_CONTEXT_FIELD_ACCESSORS(index, type, name) \
- void set_##name(type* value) { \
- DCHECK(IsNativeContext()); \
- set(index, value); \
- } \
- bool is_##name(type* value) { \
- DCHECK(IsNativeContext()); \
- return type::cast(get(index)) == value; \
- } \
- type* name() { \
- DCHECK(IsNativeContext()); \
- return type::cast(get(index)); \
- }
+ inline void set_##name(type* value); \
+ inline bool is_##name(type* value); \
+ inline type* name();
NATIVE_CONTEXT_FIELDS(NATIVE_CONTEXT_FIELD_ACCESSORS)
#undef NATIVE_CONTEXT_FIELD_ACCESSORS
@@ -512,7 +514,7 @@ class Context: public FixedArray {
: SLOPPY_GENERATOR_FUNCTION_MAP_INDEX;
}
- if (IsConstructor(kind)) {
+ if (IsClassConstructor(kind)) {
// Use strict function map (no own "caller" / "arguments")
return is_strong(language_mode) ? STRONG_CONSTRUCTOR_MAP_INDEX
: STRICT_FUNCTION_MAP_INDEX;
@@ -531,6 +533,7 @@ class Context: public FixedArray {
}
static const int kSize = kHeaderSize + NATIVE_CONTEXT_SLOTS * kPointerSize;
+ static const int kNotFound = -1;
// GC support.
typedef FixedBodyDescriptor<
@@ -542,9 +545,6 @@ class Context: public FixedArray {
kSize> MarkCompactBodyDescriptor;
private:
- // Unchecked access to the slots.
- Object* unchecked_previous() { return get(PREVIOUS_INDEX); }
-
#ifdef DEBUG
// Bootstrapping-aware type checks.
static bool IsBootstrappingOrValidParentContext(Object* object, Context* kid);