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

Side by Side Diff: src/interpreter/interpreter-assembler.cc

Issue 2342533002: [ignition] inline allocation site creation to call/constructor handlers. (Closed)
Patch Set: Quick fix. 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/code-stubs.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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 #include "src/interpreter/interpreter-assembler.h" 5 #include "src/interpreter/interpreter-assembler.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <ostream> 8 #include <ostream>
9 9
10 #include "src/code-factory.h" 10 #include "src/code-factory.h"
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 639
640 CreateWeakCellInFeedbackVector(type_feedback_vector, SmiTag(slot_id), 640 CreateWeakCellInFeedbackVector(type_feedback_vector, SmiTag(slot_id),
641 function); 641 function);
642 642
643 // Call using call function builtin. 643 // Call using call function builtin.
644 Goto(&call_function); 644 Goto(&call_function);
645 } 645 }
646 646
647 Bind(&create_allocation_site); 647 Bind(&create_allocation_site);
648 { 648 {
649 // TODO(mythria): Inline the creation of the allocation site. 649 CreateAllocationSiteInFeedbackVector(type_feedback_vector,
650 CreateAllocationSiteStub create_stub(isolate()); 650 SmiTag(slot_id));
651 CallStub(create_stub.GetCallInterfaceDescriptor(),
652 HeapConstant(create_stub.GetCode()), context,
653 type_feedback_vector, SmiTag(slot_id));
654 651
655 // Call using CallFunction builtin. CallICs have a PREMONOMORPHIC state. 652 // Call using CallFunction builtin. CallICs have a PREMONOMORPHIC state.
656 // They start collecting feedback only when a call is executed the second 653 // They start collecting feedback only when a call is executed the second
657 // time. So, do not pass any feedback here. 654 // time. So, do not pass any feedback here.
658 Goto(&call_function); 655 Goto(&call_function);
659 } 656 }
660 657
661 Bind(&mark_megamorphic); 658 Bind(&mark_megamorphic);
662 { 659 {
663 // Mark it as a megamorphic. 660 // Mark it as a megamorphic.
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 Comment("initialize the feedback element"); 825 Comment("initialize the feedback element");
829 // Check that it is the Array() function. 826 // Check that it is the Array() function.
830 Node* context_slot = 827 Node* context_slot =
831 LoadFixedArrayElement(LoadNativeContext(context), 828 LoadFixedArrayElement(LoadNativeContext(context),
832 Int32Constant(Context::ARRAY_FUNCTION_INDEX)); 829 Int32Constant(Context::ARRAY_FUNCTION_INDEX));
833 Node* is_array_function = WordEqual(context_slot, constructor); 830 Node* is_array_function = WordEqual(context_slot, constructor);
834 BranchIf(is_array_function, &create_allocation_site, &create_weak_cell); 831 BranchIf(is_array_function, &create_allocation_site, &create_weak_cell);
835 832
836 Bind(&create_allocation_site); 833 Bind(&create_allocation_site);
837 { 834 {
838 // TODO(mythria): Inline the creation of allocation site. 835 Node* site = CreateAllocationSiteInFeedbackVector(
839 CreateAllocationSiteStub create_stub(isolate()); 836 type_feedback_vector, SmiTag(slot_id));
840 CallStub(create_stub.GetCallInterfaceDescriptor(), 837 allocation_feedback.Bind(site);
841 HeapConstant(create_stub.GetCode()), context,
842 type_feedback_vector, SmiTag(slot_id));
843 Node* feedback_element =
844 LoadFixedArrayElement(type_feedback_vector, slot_id);
845 allocation_feedback.Bind(feedback_element);
846 Goto(&call_construct_function); 838 Goto(&call_construct_function);
847 } 839 }
848 840
849 Bind(&create_weak_cell); 841 Bind(&create_weak_cell);
850 { 842 {
851 CreateWeakCellInFeedbackVector(type_feedback_vector, SmiTag(slot_id), 843 CreateWeakCellInFeedbackVector(type_feedback_vector, SmiTag(slot_id),
852 constructor); 844 constructor);
853 Goto(&call_construct_function); 845 Goto(&call_construct_function);
854 } 846 }
855 } 847 }
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
1344 Goto(&loop); 1336 Goto(&loop);
1345 } 1337 }
1346 Bind(&done_loop); 1338 Bind(&done_loop);
1347 1339
1348 return array; 1340 return array;
1349 } 1341 }
1350 1342
1351 } // namespace interpreter 1343 } // namespace interpreter
1352 } // namespace internal 1344 } // namespace internal
1353 } // namespace v8 1345 } // namespace v8
OLDNEW
« no previous file with comments | « src/code-stubs.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698