Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(239)

Side by Side Diff: src/contexts.h

Issue 1895603002: [esnext] prototype runtime implementation for async functions (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@AsyncFunction
Patch Set: remove weird arrow-generator thing Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_CONTEXTS_H_ 5 #ifndef V8_CONTEXTS_H_
6 #define V8_CONTEXTS_H_ 6 #define V8_CONTEXTS_H_
7 7
8 #include "src/heap/heap.h" 8 #include "src/heap/heap.h"
9 #include "src/objects.h" 9 #include "src/objects.h"
10 10
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 V(REFLECT_APPLY_INDEX, JSFunction, reflect_apply) \ 83 V(REFLECT_APPLY_INDEX, JSFunction, reflect_apply) \
84 V(REFLECT_CONSTRUCT_INDEX, JSFunction, reflect_construct) \ 84 V(REFLECT_CONSTRUCT_INDEX, JSFunction, reflect_construct) \
85 V(REFLECT_DEFINE_PROPERTY_INDEX, JSFunction, reflect_define_property) \ 85 V(REFLECT_DEFINE_PROPERTY_INDEX, JSFunction, reflect_define_property) \
86 V(REFLECT_DELETE_PROPERTY_INDEX, JSFunction, reflect_delete_property) \ 86 V(REFLECT_DELETE_PROPERTY_INDEX, JSFunction, reflect_delete_property) \
87 V(SPREAD_ARGUMENTS_INDEX, JSFunction, spread_arguments) \ 87 V(SPREAD_ARGUMENTS_INDEX, JSFunction, spread_arguments) \
88 V(SPREAD_ITERABLE_INDEX, JSFunction, spread_iterable) \ 88 V(SPREAD_ITERABLE_INDEX, JSFunction, spread_iterable) \
89 V(ORDINARY_HAS_INSTANCE_INDEX, JSFunction, ordinary_has_instance) \ 89 V(ORDINARY_HAS_INSTANCE_INDEX, JSFunction, ordinary_has_instance) \
90 V(MATH_FLOOR, JSFunction, math_floor) \ 90 V(MATH_FLOOR, JSFunction, math_floor) \
91 V(MATH_SQRT, JSFunction, math_sqrt) 91 V(MATH_SQRT, JSFunction, math_sqrt)
92 92
93 #define NATIVE_CONTEXT_IMPORTED_FIELDS(V) \ 93 #define NATIVE_CONTEXT_IMPORTED_FIELDS(V) \
94 V(ARRAY_CONCAT_INDEX, JSFunction, array_concat) \ 94 V(ARRAY_CONCAT_INDEX, JSFunction, array_concat) \
95 V(ARRAY_POP_INDEX, JSFunction, array_pop) \ 95 V(ARRAY_POP_INDEX, JSFunction, array_pop) \
96 V(ARRAY_PUSH_INDEX, JSFunction, array_push) \ 96 V(ARRAY_PUSH_INDEX, JSFunction, array_push) \
97 V(ARRAY_SHIFT_INDEX, JSFunction, array_shift) \ 97 V(ARRAY_SHIFT_INDEX, JSFunction, array_shift) \
98 V(ARRAY_SPLICE_INDEX, JSFunction, array_splice) \ 98 V(ARRAY_SPLICE_INDEX, JSFunction, array_splice) \
99 V(ARRAY_SLICE_INDEX, JSFunction, array_slice) \ 99 V(ARRAY_SLICE_INDEX, JSFunction, array_slice) \
100 V(ARRAY_UNSHIFT_INDEX, JSFunction, array_unshift) \ 100 V(ARRAY_UNSHIFT_INDEX, JSFunction, array_unshift) \
101 V(ARRAY_VALUES_ITERATOR_INDEX, JSFunction, array_values_iterator) \ 101 V(ARRAY_VALUES_ITERATOR_INDEX, JSFunction, array_values_iterator) \
102 V(DERIVED_GET_TRAP_INDEX, JSFunction, derived_get_trap) \ 102 V(DERIVED_GET_TRAP_INDEX, JSFunction, derived_get_trap) \
103 V(ERROR_FUNCTION_INDEX, JSFunction, error_function) \ 103 V(ERROR_FUNCTION_INDEX, JSFunction, error_function) \
104 V(EVAL_ERROR_FUNCTION_INDEX, JSFunction, eval_error_function) \ 104 V(EVAL_ERROR_FUNCTION_INDEX, JSFunction, eval_error_function) \
105 V(GET_STACK_TRACE_LINE_INDEX, JSFunction, get_stack_trace_line_fun) \ 105 V(GET_STACK_TRACE_LINE_INDEX, JSFunction, get_stack_trace_line_fun) \
106 V(GLOBAL_EVAL_FUN_INDEX, JSFunction, global_eval_fun) \ 106 V(GLOBAL_EVAL_FUN_INDEX, JSFunction, global_eval_fun) \
107 V(JSON_SERIALIZE_ADAPTER_INDEX, JSFunction, json_serialize_adapter) \ 107 V(JSON_SERIALIZE_ADAPTER_INDEX, JSFunction, json_serialize_adapter) \
108 V(MAKE_ERROR_FUNCTION_INDEX, JSFunction, make_error_function) \ 108 V(MAKE_ERROR_FUNCTION_INDEX, JSFunction, make_error_function) \
109 V(MAP_DELETE_METHOD_INDEX, JSFunction, map_delete) \ 109 V(MAP_DELETE_METHOD_INDEX, JSFunction, map_delete) \
110 V(MAP_GET_METHOD_INDEX, JSFunction, map_get) \ 110 V(MAP_GET_METHOD_INDEX, JSFunction, map_get) \
111 V(MAP_HAS_METHOD_INDEX, JSFunction, map_has) \ 111 V(MAP_HAS_METHOD_INDEX, JSFunction, map_has) \
112 V(MAP_SET_METHOD_INDEX, JSFunction, map_set) \ 112 V(MAP_SET_METHOD_INDEX, JSFunction, map_set) \
113 V(MATH_POW_METHOD_INDEX, JSFunction, math_pow) \ 113 V(MATH_POW_METHOD_INDEX, JSFunction, math_pow) \
114 V(MESSAGE_GET_COLUMN_NUMBER_INDEX, JSFunction, message_get_column_number) \ 114 V(MESSAGE_GET_COLUMN_NUMBER_INDEX, JSFunction, message_get_column_number) \
115 V(MESSAGE_GET_LINE_NUMBER_INDEX, JSFunction, message_get_line_number) \ 115 V(MESSAGE_GET_LINE_NUMBER_INDEX, JSFunction, message_get_line_number) \
116 V(MESSAGE_GET_SOURCE_LINE_INDEX, JSFunction, message_get_source_line) \ 116 V(MESSAGE_GET_SOURCE_LINE_INDEX, JSFunction, message_get_source_line) \
117 V(NO_SIDE_EFFECTS_TO_STRING_FUN_INDEX, JSFunction, \ 117 V(NO_SIDE_EFFECTS_TO_STRING_FUN_INDEX, JSFunction, \
118 no_side_effects_to_string_fun) \ 118 no_side_effects_to_string_fun) \
119 V(OBJECT_VALUE_OF, JSFunction, object_value_of) \ 119 V(OBJECT_VALUE_OF, JSFunction, object_value_of) \
120 V(OBJECT_TO_STRING, JSFunction, object_to_string) \ 120 V(OBJECT_TO_STRING, JSFunction, object_to_string) \
121 V(PROMISE_CATCH_INDEX, JSFunction, promise_catch) \ 121 V(PROMISE_CATCH_INDEX, JSFunction, promise_catch) \
122 V(PROMISE_CHAIN_INDEX, JSFunction, promise_chain) \ 122 V(PROMISE_CHAIN_INDEX, JSFunction, promise_chain) \
123 V(PROMISE_CREATE_INDEX, JSFunction, promise_create) \ 123 V(PROMISE_CREATE_INDEX, JSFunction, promise_create) \
124 V(PROMISE_FUNCTION_INDEX, JSFunction, promise_function) \ 124 V(PROMISE_FUNCTION_INDEX, JSFunction, promise_function) \
125 V(PROMISE_HAS_USER_DEFINED_REJECT_HANDLER_INDEX, JSFunction, \ 125 V(PROMISE_HAS_USER_DEFINED_REJECT_HANDLER_INDEX, JSFunction, \
126 promise_has_user_defined_reject_handler) \ 126 promise_has_user_defined_reject_handler) \
127 V(PROMISE_REJECT_INDEX, JSFunction, promise_reject) \ 127 V(PROMISE_REJECT_INDEX, JSFunction, promise_reject) \
128 V(PROMISE_RESOLVE_INDEX, JSFunction, promise_resolve) \ 128 V(PROMISE_RESOLVE_INDEX, JSFunction, promise_resolve) \
129 V(PROMISE_THEN_INDEX, JSFunction, promise_then) \ 129 V(PROMISE_CREATE_RESOLVED_INDEX, JSFunction, promise_create_resolved) \
130 V(RANGE_ERROR_FUNCTION_INDEX, JSFunction, range_error_function) \ 130 V(PROMISE_CREATE_REJECTED_INDEX, JSFunction, promise_create_rejected) \
131 V(REFERENCE_ERROR_FUNCTION_INDEX, JSFunction, reference_error_function) \ 131 V(ASYNC_FUNCTION_AWAIT_INDEX, JSFunction, async_function_await) \
neis 2016/05/11 09:45:16 keep it sorted
132 V(SET_ADD_METHOD_INDEX, JSFunction, set_add) \ 132 V(PROMISE_THEN_INDEX, JSFunction, promise_then) \
133 V(SET_DELETE_METHOD_INDEX, JSFunction, set_delete) \ 133 V(RANGE_ERROR_FUNCTION_INDEX, JSFunction, range_error_function) \
134 V(SET_HAS_METHOD_INDEX, JSFunction, set_has) \ 134 V(REFERENCE_ERROR_FUNCTION_INDEX, JSFunction, reference_error_function) \
135 V(STACK_OVERFLOW_BOILERPLATE_INDEX, JSObject, stack_overflow_boilerplate) \ 135 V(SET_ADD_METHOD_INDEX, JSFunction, set_add) \
136 V(SYNTAX_ERROR_FUNCTION_INDEX, JSFunction, syntax_error_function) \ 136 V(SET_DELETE_METHOD_INDEX, JSFunction, set_delete) \
137 V(TYPE_ERROR_FUNCTION_INDEX, JSFunction, type_error_function) \ 137 V(SET_HAS_METHOD_INDEX, JSFunction, set_has) \
138 V(STACK_OVERFLOW_BOILERPLATE_INDEX, JSObject, stack_overflow_boilerplate) \
139 V(SYNTAX_ERROR_FUNCTION_INDEX, JSFunction, syntax_error_function) \
140 V(TYPE_ERROR_FUNCTION_INDEX, JSFunction, type_error_function) \
138 V(URI_ERROR_FUNCTION_INDEX, JSFunction, uri_error_function) 141 V(URI_ERROR_FUNCTION_INDEX, JSFunction, uri_error_function)
139 142
140 #define NATIVE_CONTEXT_FIELDS(V) \ 143 #define NATIVE_CONTEXT_FIELDS(V) \
141 V(GLOBAL_PROXY_INDEX, JSObject, global_proxy_object) \ 144 V(GLOBAL_PROXY_INDEX, JSObject, global_proxy_object) \
142 V(EMBEDDER_DATA_INDEX, FixedArray, embedder_data) \ 145 V(EMBEDDER_DATA_INDEX, FixedArray, embedder_data) \
143 /* Below is alpha-sorted */ \ 146 /* Below is alpha-sorted */ \
144 V(ACCESSOR_PROPERTY_DESCRIPTOR_MAP_INDEX, Map, \ 147 V(ACCESSOR_PROPERTY_DESCRIPTOR_MAP_INDEX, Map, \
145 accessor_property_descriptor_map) \ 148 accessor_property_descriptor_map) \
146 V(ALLOW_CODE_GEN_FROM_STRINGS_INDEX, Object, allow_code_gen_from_strings) \ 149 V(ALLOW_CODE_GEN_FROM_STRINGS_INDEX, Object, allow_code_gen_from_strings) \
150 V(ASYNC_FUNCTION_FUNCTION_INDEX, JSFunction, async_function_constructor) \
147 V(ARRAY_BUFFER_FUN_INDEX, JSFunction, array_buffer_fun) \ 151 V(ARRAY_BUFFER_FUN_INDEX, JSFunction, array_buffer_fun) \
148 V(ARRAY_BUFFER_MAP_INDEX, Map, array_buffer_map) \ 152 V(ARRAY_BUFFER_MAP_INDEX, Map, array_buffer_map) \
149 V(ARRAY_FUNCTION_INDEX, JSFunction, array_function) \ 153 V(ARRAY_FUNCTION_INDEX, JSFunction, array_function) \
150 V(BOOL16X8_FUNCTION_INDEX, JSFunction, bool16x8_function) \ 154 V(BOOL16X8_FUNCTION_INDEX, JSFunction, bool16x8_function) \
151 V(BOOL32X4_FUNCTION_INDEX, JSFunction, bool32x4_function) \ 155 V(BOOL32X4_FUNCTION_INDEX, JSFunction, bool32x4_function) \
152 V(BOOL8X16_FUNCTION_INDEX, JSFunction, bool8x16_function) \ 156 V(BOOL8X16_FUNCTION_INDEX, JSFunction, bool8x16_function) \
153 V(BOOLEAN_FUNCTION_INDEX, JSFunction, boolean_function) \ 157 V(BOOLEAN_FUNCTION_INDEX, JSFunction, boolean_function) \
154 V(BOUND_FUNCTION_WITH_CONSTRUCTOR_MAP_INDEX, Map, \ 158 V(BOUND_FUNCTION_WITH_CONSTRUCTOR_MAP_INDEX, Map, \
155 bound_function_with_constructor_map) \ 159 bound_function_with_constructor_map) \
156 V(BOUND_FUNCTION_WITHOUT_CONSTRUCTOR_MAP_INDEX, Map, \ 160 V(BOUND_FUNCTION_WITHOUT_CONSTRUCTOR_MAP_INDEX, Map, \
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 V(SELF_WEAK_CELL_INDEX, WeakCell, self_weak_cell) \ 231 V(SELF_WEAK_CELL_INDEX, WeakCell, self_weak_cell) \
228 V(SET_ITERATOR_MAP_INDEX, Map, set_iterator_map) \ 232 V(SET_ITERATOR_MAP_INDEX, Map, set_iterator_map) \
229 V(SHARED_ARRAY_BUFFER_FUN_INDEX, JSFunction, shared_array_buffer_fun) \ 233 V(SHARED_ARRAY_BUFFER_FUN_INDEX, JSFunction, shared_array_buffer_fun) \
230 V(SLOPPY_ARGUMENTS_MAP_INDEX, Map, sloppy_arguments_map) \ 234 V(SLOPPY_ARGUMENTS_MAP_INDEX, Map, sloppy_arguments_map) \
231 V(SLOPPY_FUNCTION_MAP_INDEX, Map, sloppy_function_map) \ 235 V(SLOPPY_FUNCTION_MAP_INDEX, Map, sloppy_function_map) \
232 V(SLOPPY_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX, Map, \ 236 V(SLOPPY_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX, Map, \
233 sloppy_function_without_prototype_map) \ 237 sloppy_function_without_prototype_map) \
234 V(SLOPPY_FUNCTION_WITH_READONLY_PROTOTYPE_MAP_INDEX, Map, \ 238 V(SLOPPY_FUNCTION_WITH_READONLY_PROTOTYPE_MAP_INDEX, Map, \
235 sloppy_function_with_readonly_prototype_map) \ 239 sloppy_function_with_readonly_prototype_map) \
236 V(WASM_FUNCTION_MAP_INDEX, Map, wasm_function_map) \ 240 V(WASM_FUNCTION_MAP_INDEX, Map, wasm_function_map) \
241 V(SLOPPY_ASYNC_FUNCTION_MAP_INDEX, Map, sloppy_async_function_map) \
237 V(SLOPPY_GENERATOR_FUNCTION_MAP_INDEX, Map, sloppy_generator_function_map) \ 242 V(SLOPPY_GENERATOR_FUNCTION_MAP_INDEX, Map, sloppy_generator_function_map) \
238 V(SLOW_ALIASED_ARGUMENTS_MAP_INDEX, Map, slow_aliased_arguments_map) \ 243 V(SLOW_ALIASED_ARGUMENTS_MAP_INDEX, Map, slow_aliased_arguments_map) \
244 V(STRICT_ASYNC_FUNCTION_MAP_INDEX, Map, strict_async_function_map) \
239 V(STRICT_ARGUMENTS_MAP_INDEX, Map, strict_arguments_map) \ 245 V(STRICT_ARGUMENTS_MAP_INDEX, Map, strict_arguments_map) \
240 V(STRICT_FUNCTION_MAP_INDEX, Map, strict_function_map) \ 246 V(STRICT_FUNCTION_MAP_INDEX, Map, strict_function_map) \
241 V(STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX, Map, \ 247 V(STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX, Map, \
242 strict_function_without_prototype_map) \ 248 strict_function_without_prototype_map) \
243 V(STRICT_GENERATOR_FUNCTION_MAP_INDEX, Map, strict_generator_function_map) \ 249 V(STRICT_GENERATOR_FUNCTION_MAP_INDEX, Map, strict_generator_function_map) \
244 V(STRING_FUNCTION_INDEX, JSFunction, string_function) \ 250 V(STRING_FUNCTION_INDEX, JSFunction, string_function) \
245 V(STRING_FUNCTION_PROTOTYPE_MAP_INDEX, Map, string_function_prototype_map) \ 251 V(STRING_FUNCTION_PROTOTYPE_MAP_INDEX, Map, string_function_prototype_map) \
246 V(SYMBOL_FUNCTION_INDEX, JSFunction, symbol_function) \ 252 V(SYMBOL_FUNCTION_INDEX, JSFunction, symbol_function) \
247 V(UINT16_ARRAY_FUN_INDEX, JSFunction, uint16_array_fun) \ 253 V(UINT16_ARRAY_FUN_INDEX, JSFunction, uint16_array_fun) \
248 V(UINT16X8_FUNCTION_INDEX, JSFunction, uint16x8_function) \ 254 V(UINT16X8_FUNCTION_INDEX, JSFunction, uint16x8_function) \
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 static int SlotOffset(int index) { 515 static int SlotOffset(int index) {
510 return kHeaderSize + index * kPointerSize - kHeapObjectTag; 516 return kHeaderSize + index * kPointerSize - kHeapObjectTag;
511 } 517 }
512 518
513 static int FunctionMapIndex(LanguageMode language_mode, FunctionKind kind) { 519 static int FunctionMapIndex(LanguageMode language_mode, FunctionKind kind) {
514 if (IsGeneratorFunction(kind)) { 520 if (IsGeneratorFunction(kind)) {
515 return is_strict(language_mode) ? STRICT_GENERATOR_FUNCTION_MAP_INDEX 521 return is_strict(language_mode) ? STRICT_GENERATOR_FUNCTION_MAP_INDEX
516 : SLOPPY_GENERATOR_FUNCTION_MAP_INDEX; 522 : SLOPPY_GENERATOR_FUNCTION_MAP_INDEX;
517 } 523 }
518 524
525 if (IsAsyncFunction(kind)) {
526 return is_strict(language_mode) ? STRICT_ASYNC_FUNCTION_MAP_INDEX
527 : SLOPPY_ASYNC_FUNCTION_MAP_INDEX;
528 }
529
519 if (IsClassConstructor(kind)) { 530 if (IsClassConstructor(kind)) {
520 // Use strict function map (no own "caller" / "arguments") 531 // Use strict function map (no own "caller" / "arguments")
521 return STRICT_FUNCTION_MAP_INDEX; 532 return STRICT_FUNCTION_MAP_INDEX;
522 } 533 }
523 534
524 if (IsArrowFunction(kind) || IsConciseMethod(kind) || 535 if (IsArrowFunction(kind) || IsConciseMethod(kind) ||
525 IsAccessorFunction(kind)) { 536 IsAccessorFunction(kind)) {
526 return STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX; 537 return STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX;
527 } 538 }
528 539
(...skipping 26 matching lines...) Expand all
555 #endif 566 #endif
556 567
557 STATIC_ASSERT(kHeaderSize == Internals::kContextHeaderSize); 568 STATIC_ASSERT(kHeaderSize == Internals::kContextHeaderSize);
558 STATIC_ASSERT(EMBEDDER_DATA_INDEX == Internals::kContextEmbedderDataIndex); 569 STATIC_ASSERT(EMBEDDER_DATA_INDEX == Internals::kContextEmbedderDataIndex);
559 }; 570 };
560 571
561 } // namespace internal 572 } // namespace internal
562 } // namespace v8 573 } // namespace v8
563 574
564 #endif // V8_CONTEXTS_H_ 575 #endif // V8_CONTEXTS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698