diff options
author | Ali Ijaz Sheikh <ofrobots@google.com> | 2015-11-30 21:22:40 -0800 |
---|---|---|
committer | Ali Ijaz Sheikh <ofrobots@google.com> | 2015-12-04 00:06:01 -0800 |
commit | 8a43a3d7619fde59f0d1f2fad05d8ae7d1732b02 (patch) | |
tree | 8698af91526d0eac90840dcba1e5b565160105c4 /deps/v8/src/contexts.h | |
parent | 8a2acd4cc9807510786b4b6f7ad3a947aeb3a14c (diff) | |
download | node-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.h | 426 |
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); |