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

Side by Side Diff: src/contexts.h

Issue 1731063007: Remove the global Strength enum class completely. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@local_strong-remove-literals
Patch Set: Remove more cruft. Created 4 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
« no previous file with comments | « src/bootstrapper.cc ('k') | src/elements.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 js_array_fast_smi_elements_map_index) \ 204 js_array_fast_smi_elements_map_index) \
205 V(JS_ARRAY_FAST_HOLEY_SMI_ELEMENTS_MAP_INDEX, Map, \ 205 V(JS_ARRAY_FAST_HOLEY_SMI_ELEMENTS_MAP_INDEX, Map, \
206 js_array_fast_holey_smi_elements_map_index) \ 206 js_array_fast_holey_smi_elements_map_index) \
207 V(JS_ARRAY_FAST_ELEMENTS_MAP_INDEX, Map, js_array_fast_elements_map_index) \ 207 V(JS_ARRAY_FAST_ELEMENTS_MAP_INDEX, Map, js_array_fast_elements_map_index) \
208 V(JS_ARRAY_FAST_HOLEY_ELEMENTS_MAP_INDEX, Map, \ 208 V(JS_ARRAY_FAST_HOLEY_ELEMENTS_MAP_INDEX, Map, \
209 js_array_fast_holey_elements_map_index) \ 209 js_array_fast_holey_elements_map_index) \
210 V(JS_ARRAY_FAST_DOUBLE_ELEMENTS_MAP_INDEX, Map, \ 210 V(JS_ARRAY_FAST_DOUBLE_ELEMENTS_MAP_INDEX, Map, \
211 js_array_fast_double_elements_map_index) \ 211 js_array_fast_double_elements_map_index) \
212 V(JS_ARRAY_FAST_HOLEY_DOUBLE_ELEMENTS_MAP_INDEX, Map, \ 212 V(JS_ARRAY_FAST_HOLEY_DOUBLE_ELEMENTS_MAP_INDEX, Map, \
213 js_array_fast_holey_double_elements_map_index) \ 213 js_array_fast_holey_double_elements_map_index) \
214 V(JS_ARRAY_FAST_SMI_ELEMENTS_STRONG_MAP_INDEX, Map, \
215 js_array_fast_smi_elements_strong_map_index) \
216 V(JS_ARRAY_FAST_HOLEY_SMI_ELEMENTS_STRONG_MAP_INDEX, Map, \
217 js_array_fast_holey_smi_elements_strong_map_index) \
218 V(JS_ARRAY_FAST_ELEMENTS_STRONG_MAP_INDEX, Map, \
219 js_array_fast_elements_strong_map_index) \
220 V(JS_ARRAY_FAST_HOLEY_ELEMENTS_STRONG_MAP_INDEX, Map, \
221 js_array_fast_holey_elements_strong_map_index) \
222 V(JS_ARRAY_FAST_DOUBLE_ELEMENTS_STRONG_MAP_INDEX, Map, \
223 js_array_fast_double_elements_strong_map_index) \
224 V(JS_ARRAY_FAST_HOLEY_DOUBLE_ELEMENTS_STRONG_MAP_INDEX, Map, \
225 js_array_fast_holey_double_elements_strong_map_index) \
226 V(JS_MAP_FUN_INDEX, JSFunction, js_map_fun) \ 214 V(JS_MAP_FUN_INDEX, JSFunction, js_map_fun) \
227 V(JS_MAP_MAP_INDEX, Map, js_map_map) \ 215 V(JS_MAP_MAP_INDEX, Map, js_map_map) \
228 V(JS_OBJECT_STRONG_MAP_INDEX, Map, js_object_strong_map) \
229 V(JS_SET_FUN_INDEX, JSFunction, js_set_fun) \ 216 V(JS_SET_FUN_INDEX, JSFunction, js_set_fun) \
230 V(JS_SET_MAP_INDEX, Map, js_set_map) \ 217 V(JS_SET_MAP_INDEX, Map, js_set_map) \
231 V(JS_WEAK_MAP_FUN_INDEX, JSFunction, js_weak_map_fun) \ 218 V(JS_WEAK_MAP_FUN_INDEX, JSFunction, js_weak_map_fun) \
232 V(JS_WEAK_SET_FUN_INDEX, JSFunction, js_weak_set_fun) \ 219 V(JS_WEAK_SET_FUN_INDEX, JSFunction, js_weak_set_fun) \
233 V(MAP_CACHE_INDEX, Object, map_cache) \ 220 V(MAP_CACHE_INDEX, Object, map_cache) \
234 V(MAP_ITERATOR_MAP_INDEX, Map, map_iterator_map) \ 221 V(MAP_ITERATOR_MAP_INDEX, Map, map_iterator_map) \
235 V(STRING_ITERATOR_MAP_INDEX, Map, string_iterator_map) \ 222 V(STRING_ITERATOR_MAP_INDEX, Map, string_iterator_map) \
236 V(MESSAGE_LISTENERS_INDEX, JSObject, message_listeners) \ 223 V(MESSAGE_LISTENERS_INDEX, JSObject, message_listeners) \
237 V(NATIVES_UTILS_OBJECT_INDEX, Object, natives_utils_object) \ 224 V(NATIVES_UTILS_OBJECT_INDEX, Object, natives_utils_object) \
238 V(NORMALIZED_MAP_CACHE_INDEX, Object, normalized_map_cache) \ 225 V(NORMALIZED_MAP_CACHE_INDEX, Object, normalized_map_cache) \
(...skipping 23 matching lines...) Expand all
262 V(WASM_FUNCTION_MAP_INDEX, Map, wasm_function_map) \ 249 V(WASM_FUNCTION_MAP_INDEX, Map, wasm_function_map) \
263 V(SLOPPY_GENERATOR_FUNCTION_MAP_INDEX, Map, sloppy_generator_function_map) \ 250 V(SLOPPY_GENERATOR_FUNCTION_MAP_INDEX, Map, sloppy_generator_function_map) \
264 V(SLOW_ALIASED_ARGUMENTS_MAP_INDEX, Map, slow_aliased_arguments_map) \ 251 V(SLOW_ALIASED_ARGUMENTS_MAP_INDEX, Map, slow_aliased_arguments_map) \
265 V(STRICT_ARGUMENTS_MAP_INDEX, Map, strict_arguments_map) \ 252 V(STRICT_ARGUMENTS_MAP_INDEX, Map, strict_arguments_map) \
266 V(STRICT_FUNCTION_MAP_INDEX, Map, strict_function_map) \ 253 V(STRICT_FUNCTION_MAP_INDEX, Map, strict_function_map) \
267 V(STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX, Map, \ 254 V(STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX, Map, \
268 strict_function_without_prototype_map) \ 255 strict_function_without_prototype_map) \
269 V(STRICT_GENERATOR_FUNCTION_MAP_INDEX, Map, strict_generator_function_map) \ 256 V(STRICT_GENERATOR_FUNCTION_MAP_INDEX, Map, strict_generator_function_map) \
270 V(STRING_FUNCTION_INDEX, JSFunction, string_function) \ 257 V(STRING_FUNCTION_INDEX, JSFunction, string_function) \
271 V(STRING_FUNCTION_PROTOTYPE_MAP_INDEX, Map, string_function_prototype_map) \ 258 V(STRING_FUNCTION_PROTOTYPE_MAP_INDEX, Map, string_function_prototype_map) \
272 V(STRONG_CONSTRUCTOR_MAP_INDEX, Map, strong_constructor_map) \
273 V(STRONG_FUNCTION_MAP_INDEX, Map, strong_function_map) \
274 V(STRONG_GENERATOR_FUNCTION_MAP_INDEX, Map, strong_generator_function_map) \
275 V(STRONG_MAP_CACHE_INDEX, Object, strong_map_cache) \
276 V(SYMBOL_FUNCTION_INDEX, JSFunction, symbol_function) \ 259 V(SYMBOL_FUNCTION_INDEX, JSFunction, symbol_function) \
277 V(UINT16_ARRAY_FUN_INDEX, JSFunction, uint16_array_fun) \ 260 V(UINT16_ARRAY_FUN_INDEX, JSFunction, uint16_array_fun) \
278 V(UINT16X8_FUNCTION_INDEX, JSFunction, uint16x8_function) \ 261 V(UINT16X8_FUNCTION_INDEX, JSFunction, uint16x8_function) \
279 V(UINT32_ARRAY_FUN_INDEX, JSFunction, uint32_array_fun) \ 262 V(UINT32_ARRAY_FUN_INDEX, JSFunction, uint32_array_fun) \
280 V(UINT32X4_FUNCTION_INDEX, JSFunction, uint32x4_function) \ 263 V(UINT32X4_FUNCTION_INDEX, JSFunction, uint32x4_function) \
281 V(UINT8_ARRAY_FUN_INDEX, JSFunction, uint8_array_fun) \ 264 V(UINT8_ARRAY_FUN_INDEX, JSFunction, uint8_array_fun) \
282 V(UINT8_CLAMPED_ARRAY_FUN_INDEX, JSFunction, uint8_clamped_array_fun) \ 265 V(UINT8_CLAMPED_ARRAY_FUN_INDEX, JSFunction, uint8_clamped_array_fun) \
283 V(UINT8X16_FUNCTION_INDEX, JSFunction, uint8x16_function) \ 266 V(UINT8X16_FUNCTION_INDEX, JSFunction, uint8x16_function) \
284 NATIVE_CONTEXT_INTRINSIC_FUNCTIONS(V) \ 267 NATIVE_CONTEXT_INTRINSIC_FUNCTIONS(V) \
285 NATIVE_CONTEXT_IMPORTED_FIELDS(V) 268 NATIVE_CONTEXT_IMPORTED_FIELDS(V)
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 // Scavenge treats them as strong references. 392 // Scavenge treats them as strong references.
410 OPTIMIZED_FUNCTIONS_LIST, // Weak. 393 OPTIMIZED_FUNCTIONS_LIST, // Weak.
411 OPTIMIZED_CODE_LIST, // Weak. 394 OPTIMIZED_CODE_LIST, // Weak.
412 DEOPTIMIZED_CODE_LIST, // Weak. 395 DEOPTIMIZED_CODE_LIST, // Weak.
413 NEXT_CONTEXT_LINK, // Weak. 396 NEXT_CONTEXT_LINK, // Weak.
414 397
415 // Total number of slots. 398 // Total number of slots.
416 NATIVE_CONTEXT_SLOTS, 399 NATIVE_CONTEXT_SLOTS,
417 FIRST_WEAK_SLOT = OPTIMIZED_FUNCTIONS_LIST, 400 FIRST_WEAK_SLOT = OPTIMIZED_FUNCTIONS_LIST,
418 FIRST_JS_ARRAY_MAP_SLOT = JS_ARRAY_FAST_SMI_ELEMENTS_MAP_INDEX, 401 FIRST_JS_ARRAY_MAP_SLOT = JS_ARRAY_FAST_SMI_ELEMENTS_MAP_INDEX,
419 FIRST_JS_ARRAY_STRONG_MAP_SLOT =
420 JS_ARRAY_FAST_SMI_ELEMENTS_STRONG_MAP_INDEX,
421 402
422 MIN_CONTEXT_SLOTS = GLOBAL_PROXY_INDEX, 403 MIN_CONTEXT_SLOTS = GLOBAL_PROXY_INDEX,
423 // This slot holds the thrown value in catch contexts. 404 // This slot holds the thrown value in catch contexts.
424 THROWN_OBJECT_INDEX = MIN_CONTEXT_SLOTS, 405 THROWN_OBJECT_INDEX = MIN_CONTEXT_SLOTS,
425 }; 406 };
426 407
427 void IncrementErrorsThrown(); 408 void IncrementErrorsThrown();
428 int GetErrorsThrown(); 409 int GetErrorsThrown();
429 410
430 // Direct slot access. 411 // Direct slot access.
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 PropertyAttributes* attributes, 513 PropertyAttributes* attributes,
533 BindingFlags* binding_flags); 514 BindingFlags* binding_flags);
534 515
535 // Code generation support. 516 // Code generation support.
536 static int SlotOffset(int index) { 517 static int SlotOffset(int index) {
537 return kHeaderSize + index * kPointerSize - kHeapObjectTag; 518 return kHeaderSize + index * kPointerSize - kHeapObjectTag;
538 } 519 }
539 520
540 static int FunctionMapIndex(LanguageMode language_mode, FunctionKind kind) { 521 static int FunctionMapIndex(LanguageMode language_mode, FunctionKind kind) {
541 if (IsGeneratorFunction(kind)) { 522 if (IsGeneratorFunction(kind)) {
542 return is_strong(language_mode) ? STRONG_GENERATOR_FUNCTION_MAP_INDEX : 523 return is_strict(language_mode) ? STRICT_GENERATOR_FUNCTION_MAP_INDEX
543 is_strict(language_mode) ? STRICT_GENERATOR_FUNCTION_MAP_INDEX
544 : SLOPPY_GENERATOR_FUNCTION_MAP_INDEX; 524 : SLOPPY_GENERATOR_FUNCTION_MAP_INDEX;
545 } 525 }
546 526
547 if (IsClassConstructor(kind)) { 527 if (IsClassConstructor(kind)) {
548 // Use strict function map (no own "caller" / "arguments") 528 // Use strict function map (no own "caller" / "arguments")
549 return is_strong(language_mode) ? STRONG_CONSTRUCTOR_MAP_INDEX 529 return STRICT_FUNCTION_MAP_INDEX;
550 : STRICT_FUNCTION_MAP_INDEX;
551 } 530 }
552 531
553 if (IsArrowFunction(kind) || IsConciseMethod(kind) || 532 if (IsArrowFunction(kind) || IsConciseMethod(kind) ||
554 IsAccessorFunction(kind)) { 533 IsAccessorFunction(kind)) {
555 return is_strong(language_mode) 534 return STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX;
556 ? STRONG_FUNCTION_MAP_INDEX
557 : STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX;
558 } 535 }
559 536
560 return is_strong(language_mode) ? STRONG_FUNCTION_MAP_INDEX : 537 return is_strict(language_mode) ? STRICT_FUNCTION_MAP_INDEX
561 is_strict(language_mode) ? STRICT_FUNCTION_MAP_INDEX
562 : SLOPPY_FUNCTION_MAP_INDEX; 538 : SLOPPY_FUNCTION_MAP_INDEX;
563 } 539 }
564 540
565 static int ArrayMapIndex(ElementsKind elements_kind, 541 static int ArrayMapIndex(ElementsKind elements_kind) {
566 Strength strength = Strength::WEAK) {
567 DCHECK(IsFastElementsKind(elements_kind)); 542 DCHECK(IsFastElementsKind(elements_kind));
568 return elements_kind + (is_strong(strength) ? FIRST_JS_ARRAY_STRONG_MAP_SLOT 543 return elements_kind + FIRST_JS_ARRAY_MAP_SLOT;
569 : FIRST_JS_ARRAY_MAP_SLOT);
570 } 544 }
571 545
572 static const int kSize = kHeaderSize + NATIVE_CONTEXT_SLOTS * kPointerSize; 546 static const int kSize = kHeaderSize + NATIVE_CONTEXT_SLOTS * kPointerSize;
573 static const int kNotFound = -1; 547 static const int kNotFound = -1;
574 548
575 // GC support. 549 // GC support.
576 typedef FixedBodyDescriptor< 550 typedef FixedBodyDescriptor<
577 kHeaderSize, kSize, kSize> ScavengeBodyDescriptor; 551 kHeaderSize, kSize, kSize> ScavengeBodyDescriptor;
578 552
579 typedef FixedBodyDescriptor< 553 typedef FixedBodyDescriptor<
580 kHeaderSize, 554 kHeaderSize,
581 kHeaderSize + FIRST_WEAK_SLOT * kPointerSize, 555 kHeaderSize + FIRST_WEAK_SLOT * kPointerSize,
582 kSize> MarkCompactBodyDescriptor; 556 kSize> MarkCompactBodyDescriptor;
583 557
584 private: 558 private:
585 #ifdef DEBUG 559 #ifdef DEBUG
586 // Bootstrapping-aware type checks. 560 // Bootstrapping-aware type checks.
587 static bool IsBootstrappingOrNativeContext(Isolate* isolate, Object* object); 561 static bool IsBootstrappingOrNativeContext(Isolate* isolate, Object* object);
588 static bool IsBootstrappingOrValidParentContext(Object* object, Context* kid); 562 static bool IsBootstrappingOrValidParentContext(Object* object, Context* kid);
589 #endif 563 #endif
590 564
591 STATIC_ASSERT(kHeaderSize == Internals::kContextHeaderSize); 565 STATIC_ASSERT(kHeaderSize == Internals::kContextHeaderSize);
592 STATIC_ASSERT(EMBEDDER_DATA_INDEX == Internals::kContextEmbedderDataIndex); 566 STATIC_ASSERT(EMBEDDER_DATA_INDEX == Internals::kContextEmbedderDataIndex);
593 }; 567 };
594 568
595 } // namespace internal 569 } // namespace internal
596 } // namespace v8 570 } // namespace v8
597 571
598 #endif // V8_CONTEXTS_H_ 572 #endif // V8_CONTEXTS_H_
OLDNEW
« no previous file with comments | « src/bootstrapper.cc ('k') | src/elements.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698