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

Side by Side Diff: src/code-stub-assembler.h

Issue 2277363002: [stubs] Consolidate TryToName implementation (Closed)
Patch Set: reword comment Created 4 years, 3 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/builtins/builtins-object.cc ('k') | src/code-stub-assembler.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 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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_CODE_STUB_ASSEMBLER_H_ 5 #ifndef V8_CODE_STUB_ASSEMBLER_H_
6 #define V8_CODE_STUB_ASSEMBLER_H_ 6 #define V8_CODE_STUB_ASSEMBLER_H_
7 7
8 #include <functional> 8 #include <functional>
9 9
10 #include "src/compiler/code-assembler.h" 10 #include "src/compiler/code-assembler.h"
(...skipping 28 matching lines...) Expand all
39 Code::Flags flags, const char* name); 39 Code::Flags flags, const char* name);
40 40
41 enum AllocationFlag : uint8_t { 41 enum AllocationFlag : uint8_t {
42 kNone = 0, 42 kNone = 0,
43 kDoubleAlignment = 1, 43 kDoubleAlignment = 1,
44 kPretenured = 1 << 1 44 kPretenured = 1 << 1
45 }; 45 };
46 46
47 typedef base::Flags<AllocationFlag> AllocationFlags; 47 typedef base::Flags<AllocationFlag> AllocationFlags;
48 48
49 enum ParameterMode { INTEGER_PARAMETERS, SMI_PARAMETERS }; 49 enum ParameterMode { INTEGER_PARAMETERS, SMI_PARAMETERS, INTPTR_PARAMETERS };
50 50
51 compiler::Node* BooleanMapConstant(); 51 compiler::Node* BooleanMapConstant();
52 compiler::Node* EmptyStringConstant(); 52 compiler::Node* EmptyStringConstant();
53 compiler::Node* HeapNumberMapConstant(); 53 compiler::Node* HeapNumberMapConstant();
54 compiler::Node* NoContextConstant(); 54 compiler::Node* NoContextConstant();
55 compiler::Node* NanConstant(); 55 compiler::Node* NanConstant();
56 compiler::Node* NullConstant(); 56 compiler::Node* NullConstant();
57 compiler::Node* MinusZeroConstant(); 57 compiler::Node* MinusZeroConstant();
58 compiler::Node* UndefinedConstant(); 58 compiler::Node* UndefinedConstant();
59 compiler::Node* TheHoleConstant(); 59 compiler::Node* TheHoleConstant();
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 static const int kInlinedDictionaryProbes = 4; 392 static const int kInlinedDictionaryProbes = 4;
393 template <typename Dictionary> 393 template <typename Dictionary>
394 void NameDictionaryLookup(compiler::Node* dictionary, 394 void NameDictionaryLookup(compiler::Node* dictionary,
395 compiler::Node* unique_name, Label* if_found, 395 compiler::Node* unique_name, Label* if_found,
396 Variable* var_name_index, Label* if_not_found, 396 Variable* var_name_index, Label* if_not_found,
397 int inlined_probes = kInlinedDictionaryProbes); 397 int inlined_probes = kInlinedDictionaryProbes);
398 398
399 compiler::Node* ComputeIntegerHash(compiler::Node* key, compiler::Node* seed); 399 compiler::Node* ComputeIntegerHash(compiler::Node* key, compiler::Node* seed);
400 400
401 template <typename Dictionary> 401 template <typename Dictionary>
402 void NumberDictionaryLookup(compiler::Node* dictionary, compiler::Node* key, 402 void NumberDictionaryLookup(compiler::Node* dictionary,
403 Label* if_found, Variable* var_entry, 403 compiler::Node* intptr_index, Label* if_found,
404 Label* if_not_found); 404 Variable* var_entry, Label* if_not_found);
405 405
406 // Tries to check if {object} has own {unique_name} property. 406 // Tries to check if {object} has own {unique_name} property.
407 void TryHasOwnProperty(compiler::Node* object, compiler::Node* map, 407 void TryHasOwnProperty(compiler::Node* object, compiler::Node* map,
408 compiler::Node* instance_type, 408 compiler::Node* instance_type,
409 compiler::Node* unique_name, Label* if_found, 409 compiler::Node* unique_name, Label* if_found,
410 Label* if_not_found, Label* if_bailout); 410 Label* if_not_found, Label* if_bailout);
411 411
412 // Tries to get {object}'s own {unique_name} property value. If the property 412 // Tries to get {object}'s own {unique_name} property value. If the property
413 // is an accessor then it also calls a getter. If the property is a double 413 // is an accessor then it also calls a getter. If the property is a double
414 // field it re-wraps value in an immutable heap number. 414 // field it re-wraps value in an immutable heap number.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 // Note: this code does not check if the global dictionary points to deleted 447 // Note: this code does not check if the global dictionary points to deleted
448 // entry! This has to be done by the caller. 448 // entry! This has to be done by the caller.
449 void TryLookupProperty(compiler::Node* object, compiler::Node* map, 449 void TryLookupProperty(compiler::Node* object, compiler::Node* map,
450 compiler::Node* instance_type, 450 compiler::Node* instance_type,
451 compiler::Node* unique_name, Label* if_found_fast, 451 compiler::Node* unique_name, Label* if_found_fast,
452 Label* if_found_dict, Label* if_found_global, 452 Label* if_found_dict, Label* if_found_global,
453 Variable* var_meta_storage, Variable* var_name_index, 453 Variable* var_meta_storage, Variable* var_name_index,
454 Label* if_not_found, Label* if_bailout); 454 Label* if_not_found, Label* if_bailout);
455 455
456 void TryLookupElement(compiler::Node* object, compiler::Node* map, 456 void TryLookupElement(compiler::Node* object, compiler::Node* map,
457 compiler::Node* instance_type, compiler::Node* index, 457 compiler::Node* instance_type,
458 Label* if_found, Label* if_not_found, 458 compiler::Node* intptr_index, Label* if_found,
459 Label* if_bailout); 459 Label* if_not_found, Label* if_bailout);
460 460
461 // This is a type of a lookup in holder generator function. In case of a 461 // This is a type of a lookup in holder generator function. In case of a
462 // property lookup the {key} is guaranteed to be a unique name and in case of 462 // property lookup the {key} is guaranteed to be a unique name and in case of
463 // element lookup the key is an Int32 index. 463 // element lookup the key is an Int32 index.
464 typedef std::function<void(compiler::Node* receiver, compiler::Node* holder, 464 typedef std::function<void(compiler::Node* receiver, compiler::Node* holder,
465 compiler::Node* map, compiler::Node* instance_type, 465 compiler::Node* map, compiler::Node* instance_type,
466 compiler::Node* key, Label* next_holder, 466 compiler::Node* key, Label* next_holder,
467 Label* if_bailout)> 467 Label* if_bailout)>
468 LookupInHolder; 468 LookupInHolder;
469 469
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 572
573 private: 573 private:
574 enum ElementSupport { kOnlyProperties, kSupportElements }; 574 enum ElementSupport { kOnlyProperties, kSupportElements };
575 575
576 void HandleLoadICHandlerCase( 576 void HandleLoadICHandlerCase(
577 const LoadICParameters* p, compiler::Node* handler, Label* miss, 577 const LoadICParameters* p, compiler::Node* handler, Label* miss,
578 ElementSupport support_elements = kOnlyProperties); 578 ElementSupport support_elements = kOnlyProperties);
579 compiler::Node* TryToIntptr(compiler::Node* key, Label* miss); 579 compiler::Node* TryToIntptr(compiler::Node* key, Label* miss);
580 void EmitFastElementsBoundsCheck(compiler::Node* object, 580 void EmitFastElementsBoundsCheck(compiler::Node* object,
581 compiler::Node* elements, 581 compiler::Node* elements,
582 compiler::Node* intptr_key, 582 compiler::Node* intptr_index,
583 compiler::Node* is_jsarray_condition, 583 compiler::Node* is_jsarray_condition,
584 Label* miss); 584 Label* miss);
585 void EmitElementLoad(compiler::Node* object, compiler::Node* elements, 585 void EmitElementLoad(compiler::Node* object, compiler::Node* elements,
586 compiler::Node* elements_kind, compiler::Node* key, 586 compiler::Node* elements_kind, compiler::Node* key,
587 compiler::Node* is_jsarray_condition, Label* if_hole, 587 compiler::Node* is_jsarray_condition, Label* if_hole,
588 Label* rebox_double, Variable* var_double_value, 588 Label* rebox_double, Variable* var_double_value,
589 Label* unimplemented_elements_kind, Label* out_of_bounds, 589 Label* unimplemented_elements_kind, Label* out_of_bounds,
590 Label* miss); 590 Label* miss);
591 void BranchIfPrototypesHaveNoElements(compiler::Node* receiver_map, 591 void BranchIfPrototypesHaveNoElements(compiler::Node* receiver_map,
592 Label* definitely_no_elements, 592 Label* definitely_no_elements,
(...skipping 15 matching lines...) Expand all
608 compiler::Node* SmiShiftBitsConstant(); 608 compiler::Node* SmiShiftBitsConstant();
609 609
610 static const int kElementLoopUnrollThreshold = 8; 610 static const int kElementLoopUnrollThreshold = 8;
611 }; 611 };
612 612
613 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags); 613 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags);
614 614
615 } // namespace internal 615 } // namespace internal
616 } // namespace v8 616 } // namespace v8
617 #endif // V8_CODE_STUB_ASSEMBLER_H_ 617 #endif // V8_CODE_STUB_ASSEMBLER_H_
OLDNEW
« no previous file with comments | « src/builtins/builtins-object.cc ('k') | src/code-stub-assembler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698