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

Side by Side Diff: src/contexts.h

Issue 1027283004: [es6] do not add caller/arguments to ES6 function definitions (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: diff cleanup Created 5 years, 9 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 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 V(DERIVED_SET_TRAP_INDEX, JSFunction, derived_set_trap) \ 169 V(DERIVED_SET_TRAP_INDEX, JSFunction, derived_set_trap) \
170 V(PROXY_ENUMERATE_INDEX, JSFunction, proxy_enumerate) \ 170 V(PROXY_ENUMERATE_INDEX, JSFunction, proxy_enumerate) \
171 V(OBSERVERS_NOTIFY_CHANGE_INDEX, JSFunction, observers_notify_change) \ 171 V(OBSERVERS_NOTIFY_CHANGE_INDEX, JSFunction, observers_notify_change) \
172 V(OBSERVERS_ENQUEUE_SPLICE_INDEX, JSFunction, observers_enqueue_splice) \ 172 V(OBSERVERS_ENQUEUE_SPLICE_INDEX, JSFunction, observers_enqueue_splice) \
173 V(OBSERVERS_BEGIN_SPLICE_INDEX, JSFunction, observers_begin_perform_splice) \ 173 V(OBSERVERS_BEGIN_SPLICE_INDEX, JSFunction, observers_begin_perform_splice) \
174 V(OBSERVERS_END_SPLICE_INDEX, JSFunction, observers_end_perform_splice) \ 174 V(OBSERVERS_END_SPLICE_INDEX, JSFunction, observers_end_perform_splice) \
175 V(NATIVE_OBJECT_OBSERVE_INDEX, JSFunction, native_object_observe) \ 175 V(NATIVE_OBJECT_OBSERVE_INDEX, JSFunction, native_object_observe) \
176 V(NATIVE_OBJECT_GET_NOTIFIER_INDEX, JSFunction, native_object_get_notifier) \ 176 V(NATIVE_OBJECT_GET_NOTIFIER_INDEX, JSFunction, native_object_get_notifier) \
177 V(NATIVE_OBJECT_NOTIFIER_PERFORM_CHANGE, JSFunction, \ 177 V(NATIVE_OBJECT_NOTIFIER_PERFORM_CHANGE, JSFunction, \
178 native_object_notifier_perform_change) \ 178 native_object_notifier_perform_change) \
179 V(SLOPPY_GENERATOR_FUNCTION_MAP_INDEX, Map, sloppy_generator_function_map) \ 179 V(GENERATOR_FUNCTION_MAP_INDEX, Map, generator_function_map) \
rossberg 2015/03/26 15:06:45 For symmetry and possibly future uses, I would pre
caitp (gmail) 2015/03/26 15:09:46 Acknowledged.
caitp (gmail) 2015/03/26 15:35:47 Done, in fact
180 V(STRICT_GENERATOR_FUNCTION_MAP_INDEX, Map, strict_generator_function_map) \
181 V(STRONG_GENERATOR_FUNCTION_MAP_INDEX, Map, strong_generator_function_map) \ 180 V(STRONG_GENERATOR_FUNCTION_MAP_INDEX, Map, strong_generator_function_map) \
182 V(GENERATOR_OBJECT_PROTOTYPE_MAP_INDEX, Map, generator_object_prototype_map) \ 181 V(GENERATOR_OBJECT_PROTOTYPE_MAP_INDEX, Map, generator_object_prototype_map) \
183 V(ITERATOR_RESULT_MAP_INDEX, Map, iterator_result_map) \ 182 V(ITERATOR_RESULT_MAP_INDEX, Map, iterator_result_map) \
184 V(MAP_ITERATOR_MAP_INDEX, Map, map_iterator_map) \ 183 V(MAP_ITERATOR_MAP_INDEX, Map, map_iterator_map) \
185 V(SET_ITERATOR_MAP_INDEX, Map, set_iterator_map) \ 184 V(SET_ITERATOR_MAP_INDEX, Map, set_iterator_map) \
186 V(ARRAY_VALUES_ITERATOR_INDEX, JSFunction, array_values_iterator) \ 185 V(ARRAY_VALUES_ITERATOR_INDEX, JSFunction, array_values_iterator) \
187 V(SCRIPT_CONTEXT_TABLE_INDEX, ScriptContextTable, script_context_table) 186 V(SCRIPT_CONTEXT_TABLE_INDEX, ScriptContextTable, script_context_table)
188 187
189 188
190 // A table of all script contexts. Every loaded top-level script with top-level 189 // A table of all script contexts. Every loaded top-level script with top-level
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 DERIVED_GET_TRAP_INDEX, 401 DERIVED_GET_TRAP_INDEX,
403 DERIVED_SET_TRAP_INDEX, 402 DERIVED_SET_TRAP_INDEX,
404 PROXY_ENUMERATE_INDEX, 403 PROXY_ENUMERATE_INDEX,
405 OBSERVERS_NOTIFY_CHANGE_INDEX, 404 OBSERVERS_NOTIFY_CHANGE_INDEX,
406 OBSERVERS_ENQUEUE_SPLICE_INDEX, 405 OBSERVERS_ENQUEUE_SPLICE_INDEX,
407 OBSERVERS_BEGIN_SPLICE_INDEX, 406 OBSERVERS_BEGIN_SPLICE_INDEX,
408 OBSERVERS_END_SPLICE_INDEX, 407 OBSERVERS_END_SPLICE_INDEX,
409 NATIVE_OBJECT_OBSERVE_INDEX, 408 NATIVE_OBJECT_OBSERVE_INDEX,
410 NATIVE_OBJECT_GET_NOTIFIER_INDEX, 409 NATIVE_OBJECT_GET_NOTIFIER_INDEX,
411 NATIVE_OBJECT_NOTIFIER_PERFORM_CHANGE, 410 NATIVE_OBJECT_NOTIFIER_PERFORM_CHANGE,
412 SLOPPY_GENERATOR_FUNCTION_MAP_INDEX, 411 GENERATOR_FUNCTION_MAP_INDEX,
413 STRICT_GENERATOR_FUNCTION_MAP_INDEX,
414 STRONG_GENERATOR_FUNCTION_MAP_INDEX, 412 STRONG_GENERATOR_FUNCTION_MAP_INDEX,
415 GENERATOR_OBJECT_PROTOTYPE_MAP_INDEX, 413 GENERATOR_OBJECT_PROTOTYPE_MAP_INDEX,
416 ITERATOR_RESULT_MAP_INDEX, 414 ITERATOR_RESULT_MAP_INDEX,
417 MAP_ITERATOR_MAP_INDEX, 415 MAP_ITERATOR_MAP_INDEX,
418 SET_ITERATOR_MAP_INDEX, 416 SET_ITERATOR_MAP_INDEX,
419 ARRAY_VALUES_ITERATOR_INDEX, 417 ARRAY_VALUES_ITERATOR_INDEX,
420 SCRIPT_CONTEXT_TABLE_INDEX, 418 SCRIPT_CONTEXT_TABLE_INDEX,
421 MAP_CACHE_INDEX, 419 MAP_CACHE_INDEX,
422 TO_LENGTH_FUN_INDEX, 420 TO_LENGTH_FUN_INDEX,
423 421
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 PropertyAttributes* attributes, 567 PropertyAttributes* attributes,
570 BindingFlags* binding_flags); 568 BindingFlags* binding_flags);
571 569
572 // Code generation support. 570 // Code generation support.
573 static int SlotOffset(int index) { 571 static int SlotOffset(int index) {
574 return kHeaderSize + index * kPointerSize - kHeapObjectTag; 572 return kHeaderSize + index * kPointerSize - kHeapObjectTag;
575 } 573 }
576 574
577 static int FunctionMapIndex(LanguageMode language_mode, FunctionKind kind) { 575 static int FunctionMapIndex(LanguageMode language_mode, FunctionKind kind) {
578 if (IsGeneratorFunction(kind)) { 576 if (IsGeneratorFunction(kind)) {
579 return is_strong(language_mode) ? STRONG_GENERATOR_FUNCTION_MAP_INDEX : 577 return is_strong(language_mode) ? STRONG_GENERATOR_FUNCTION_MAP_INDEX
580 is_strict(language_mode) ? STRICT_GENERATOR_FUNCTION_MAP_INDEX 578 : GENERATOR_FUNCTION_MAP_INDEX;
581 : SLOPPY_GENERATOR_FUNCTION_MAP_INDEX;
582 } 579 }
583 580
584 if (IsConstructor(kind)) { 581 if (IsConstructor(kind)) {
585 return is_strong(language_mode) ? STRONG_CONSTRUCTOR_MAP_INDEX : 582 // Use strict function map (no own "caller" / "arguments")
586 is_strict(language_mode) ? STRICT_FUNCTION_MAP_INDEX 583 return is_strong(language_mode) ? STRONG_CONSTRUCTOR_MAP_INDEX
587 : SLOPPY_FUNCTION_MAP_INDEX; 584 : STRICT_FUNCTION_MAP_INDEX;
588 } 585 }
589 586
590 if (IsArrowFunction(kind) || IsConciseMethod(kind) || 587 if (IsArrowFunction(kind) || IsConciseMethod(kind) ||
591 IsAccessorFunction(kind)) { 588 IsAccessorFunction(kind)) {
592 return is_strong(language_mode) ? STRONG_FUNCTION_MAP_INDEX : 589 return is_strong(language_mode) ? STRONG_FUNCTION_MAP_INDEX :
593 is_strict(language_mode) ? 590 is_strict(language_mode) || !IsAccessorFunction(kind) ?
594 STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX : 591 STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX :
595 SLOPPY_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX; 592 SLOPPY_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX;
596 } 593 }
597 594
598 return is_strong(language_mode) ? STRONG_FUNCTION_MAP_INDEX : 595 return is_strong(language_mode) ? STRONG_FUNCTION_MAP_INDEX :
599 is_strict(language_mode) ? STRICT_FUNCTION_MAP_INDEX 596 is_strict(language_mode) ? STRICT_FUNCTION_MAP_INDEX
600 : SLOPPY_FUNCTION_MAP_INDEX; 597 : SLOPPY_FUNCTION_MAP_INDEX;
601 } 598 }
602 599
603 static const int kSize = kHeaderSize + NATIVE_CONTEXT_SLOTS * kPointerSize; 600 static const int kSize = kHeaderSize + NATIVE_CONTEXT_SLOTS * kPointerSize;
(...skipping 17 matching lines...) Expand all
621 static bool IsBootstrappingOrGlobalObject(Isolate* isolate, Object* object); 618 static bool IsBootstrappingOrGlobalObject(Isolate* isolate, Object* object);
622 #endif 619 #endif
623 620
624 STATIC_ASSERT(kHeaderSize == Internals::kContextHeaderSize); 621 STATIC_ASSERT(kHeaderSize == Internals::kContextHeaderSize);
625 STATIC_ASSERT(EMBEDDER_DATA_INDEX == Internals::kContextEmbedderDataIndex); 622 STATIC_ASSERT(EMBEDDER_DATA_INDEX == Internals::kContextEmbedderDataIndex);
626 }; 623 };
627 624
628 } } // namespace v8::internal 625 } } // namespace v8::internal
629 626
630 #endif // V8_CONTEXTS_H_ 627 #endif // V8_CONTEXTS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698