Chromium Code Reviews| Index: src/contexts.h |
| diff --git a/src/contexts.h b/src/contexts.h |
| index 07750effb3574b74c2cfbc9f5196d08dd7c32316..7cf73eec7dae542ea00a273dc1b8a6e96f988997 100644 |
| --- a/src/contexts.h |
| +++ b/src/contexts.h |
| @@ -90,51 +90,54 @@ enum BindingFlags { |
| V(MATH_FLOOR, JSFunction, math_floor) \ |
| V(MATH_SQRT, JSFunction, math_sqrt) |
| -#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(DERIVED_GET_TRAP_INDEX, JSFunction, derived_get_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_GET_METHOD_INDEX, JSFunction, map_get) \ |
| - V(MAP_HAS_METHOD_INDEX, JSFunction, map_has) \ |
| - V(MAP_SET_METHOD_INDEX, JSFunction, map_set) \ |
| - V(MATH_POW_METHOD_INDEX, JSFunction, math_pow) \ |
| - 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(NO_SIDE_EFFECTS_TO_STRING_FUN_INDEX, JSFunction, \ |
| - no_side_effects_to_string_fun) \ |
| - V(OBJECT_VALUE_OF, JSFunction, object_value_of) \ |
| - V(OBJECT_TO_STRING, JSFunction, object_to_string) \ |
| - V(PROMISE_CATCH_INDEX, JSFunction, promise_catch) \ |
| - V(PROMISE_CHAIN_INDEX, JSFunction, promise_chain) \ |
| - V(PROMISE_CREATE_INDEX, JSFunction, promise_create) \ |
| - V(PROMISE_FUNCTION_INDEX, JSFunction, promise_function) \ |
| - 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(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_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(TYPE_ERROR_FUNCTION_INDEX, JSFunction, type_error_function) \ |
| +#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(DERIVED_GET_TRAP_INDEX, JSFunction, derived_get_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_GET_METHOD_INDEX, JSFunction, map_get) \ |
| + V(MAP_HAS_METHOD_INDEX, JSFunction, map_has) \ |
| + V(MAP_SET_METHOD_INDEX, JSFunction, map_set) \ |
| + V(MATH_POW_METHOD_INDEX, JSFunction, math_pow) \ |
| + 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(NO_SIDE_EFFECTS_TO_STRING_FUN_INDEX, JSFunction, \ |
| + no_side_effects_to_string_fun) \ |
| + V(OBJECT_VALUE_OF, JSFunction, object_value_of) \ |
| + V(OBJECT_TO_STRING, JSFunction, object_to_string) \ |
| + V(PROMISE_CATCH_INDEX, JSFunction, promise_catch) \ |
| + V(PROMISE_CHAIN_INDEX, JSFunction, promise_chain) \ |
| + V(PROMISE_CREATE_INDEX, JSFunction, promise_create) \ |
| + V(PROMISE_FUNCTION_INDEX, JSFunction, promise_function) \ |
| + 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_CREATE_RESOLVED_INDEX, JSFunction, promise_create_resolved) \ |
| + V(PROMISE_CREATE_REJECTED_INDEX, JSFunction, promise_create_rejected) \ |
| + V(ASYNC_FUNCTION_AWAIT_INDEX, JSFunction, async_function_await) \ |
|
neis
2016/05/11 09:45:16
keep it sorted
|
| + V(PROMISE_THEN_INDEX, JSFunction, promise_then) \ |
| + 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_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(TYPE_ERROR_FUNCTION_INDEX, JSFunction, type_error_function) \ |
| V(URI_ERROR_FUNCTION_INDEX, JSFunction, uri_error_function) |
| #define NATIVE_CONTEXT_FIELDS(V) \ |
| @@ -144,6 +147,7 @@ enum BindingFlags { |
| V(ACCESSOR_PROPERTY_DESCRIPTOR_MAP_INDEX, Map, \ |
| accessor_property_descriptor_map) \ |
| V(ALLOW_CODE_GEN_FROM_STRINGS_INDEX, Object, allow_code_gen_from_strings) \ |
| + V(ASYNC_FUNCTION_FUNCTION_INDEX, JSFunction, async_function_constructor) \ |
| 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) \ |
| @@ -234,8 +238,10 @@ enum BindingFlags { |
| V(SLOPPY_FUNCTION_WITH_READONLY_PROTOTYPE_MAP_INDEX, Map, \ |
| sloppy_function_with_readonly_prototype_map) \ |
| V(WASM_FUNCTION_MAP_INDEX, Map, wasm_function_map) \ |
| + V(SLOPPY_ASYNC_FUNCTION_MAP_INDEX, Map, sloppy_async_function_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_ASYNC_FUNCTION_MAP_INDEX, Map, strict_async_function_map) \ |
| V(STRICT_ARGUMENTS_MAP_INDEX, Map, strict_arguments_map) \ |
| V(STRICT_FUNCTION_MAP_INDEX, Map, strict_function_map) \ |
| V(STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX, Map, \ |
| @@ -516,6 +522,11 @@ class Context: public FixedArray { |
| : SLOPPY_GENERATOR_FUNCTION_MAP_INDEX; |
| } |
| + if (IsAsyncFunction(kind)) { |
| + return is_strict(language_mode) ? STRICT_ASYNC_FUNCTION_MAP_INDEX |
| + : SLOPPY_ASYNC_FUNCTION_MAP_INDEX; |
| + } |
| + |
| if (IsClassConstructor(kind)) { |
| // Use strict function map (no own "caller" / "arguments") |
| return STRICT_FUNCTION_MAP_INDEX; |