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

Side by Side Diff: src/interpreter/bytecode-array-builder.cc

Issue 2384123002: [Interpreter] Use RegisterList for kRegTriple and kRegPair operands. (Closed)
Patch Set: Rebase Created 4 years, 2 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/interpreter/bytecode-array-builder.h ('k') | src/interpreter/bytecode-generator.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 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/bytecode-array-builder.h" 5 #include "src/interpreter/bytecode-array-builder.h"
6 6
7 #include "src/globals.h" 7 #include "src/globals.h"
8 #include "src/interpreter/bytecode-array-writer.h" 8 #include "src/interpreter/bytecode-array-writer.h"
9 #include "src/interpreter/bytecode-dead-code-optimizer.h" 9 #include "src/interpreter/bytecode-dead-code-optimizer.h"
10 #include "src/interpreter/bytecode-label.h" 10 #include "src/interpreter/bytecode-label.h"
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 return_seen_in_block_ = true; 645 return_seen_in_block_ = true;
646 return *this; 646 return *this;
647 } 647 }
648 648
649 BytecodeArrayBuilder& BytecodeArrayBuilder::Debugger() { 649 BytecodeArrayBuilder& BytecodeArrayBuilder::Debugger() {
650 Output(Bytecode::kDebugger); 650 Output(Bytecode::kDebugger);
651 return *this; 651 return *this;
652 } 652 }
653 653
654 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare( 654 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare(
655 Register receiver, Register cache_info_triple) { 655 Register receiver, RegisterList cache_info_triple) {
656 DCHECK_EQ(3, cache_info_triple.register_count());
656 Output(Bytecode::kForInPrepare, RegisterOperand(receiver), 657 Output(Bytecode::kForInPrepare, RegisterOperand(receiver),
657 RegisterOperand(cache_info_triple)); 658 RegisterOperand(cache_info_triple.first_register()));
658 return *this; 659 return *this;
659 } 660 }
660 661
661 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInContinue( 662 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInContinue(
662 Register index, Register cache_length) { 663 Register index, Register cache_length) {
663 Output(Bytecode::kForInContinue, RegisterOperand(index), 664 Output(Bytecode::kForInContinue, RegisterOperand(index),
664 RegisterOperand(cache_length)); 665 RegisterOperand(cache_length));
665 return *this; 666 return *this;
666 } 667 }
667 668
668 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext( 669 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(
669 Register receiver, Register index, Register cache_type_array_pair, 670 Register receiver, Register index, RegisterList cache_type_array_pair,
670 int feedback_slot) { 671 int feedback_slot) {
672 DCHECK_EQ(2, cache_type_array_pair.register_count());
671 Output(Bytecode::kForInNext, RegisterOperand(receiver), 673 Output(Bytecode::kForInNext, RegisterOperand(receiver),
672 RegisterOperand(index), RegisterOperand(cache_type_array_pair), 674 RegisterOperand(index),
675 RegisterOperand(cache_type_array_pair.first_register()),
673 UnsignedOperand(feedback_slot)); 676 UnsignedOperand(feedback_slot));
674 return *this; 677 return *this;
675 } 678 }
676 679
677 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInStep(Register index) { 680 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInStep(Register index) {
678 Output(Bytecode::kForInStep, RegisterOperand(index)); 681 Output(Bytecode::kForInStep, RegisterOperand(index));
679 return *this; 682 return *this;
680 } 683 }
681 684
682 BytecodeArrayBuilder& BytecodeArrayBuilder::SuspendGenerator( 685 BytecodeArrayBuilder& BytecodeArrayBuilder::SuspendGenerator(
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 Runtime::FunctionId function_id, Register arg) { 770 Runtime::FunctionId function_id, Register arg) {
768 return CallRuntime(function_id, RegisterList(arg.index(), 1)); 771 return CallRuntime(function_id, RegisterList(arg.index(), 1));
769 } 772 }
770 773
771 BytecodeArrayBuilder& BytecodeArrayBuilder::CallRuntime( 774 BytecodeArrayBuilder& BytecodeArrayBuilder::CallRuntime(
772 Runtime::FunctionId function_id) { 775 Runtime::FunctionId function_id) {
773 return CallRuntime(function_id, RegisterList()); 776 return CallRuntime(function_id, RegisterList());
774 } 777 }
775 778
776 BytecodeArrayBuilder& BytecodeArrayBuilder::CallRuntimeForPair( 779 BytecodeArrayBuilder& BytecodeArrayBuilder::CallRuntimeForPair(
777 Runtime::FunctionId function_id, RegisterList args, Register first_return) { 780 Runtime::FunctionId function_id, RegisterList args,
781 RegisterList return_pair) {
778 DCHECK_EQ(2, Runtime::FunctionForId(function_id)->result_size); 782 DCHECK_EQ(2, Runtime::FunctionForId(function_id)->result_size);
779 DCHECK(Bytecodes::SizeForUnsignedOperand(function_id) <= OperandSize::kShort); 783 DCHECK(Bytecodes::SizeForUnsignedOperand(function_id) <= OperandSize::kShort);
784 DCHECK_EQ(2, return_pair.register_count());
780 Output(Bytecode::kCallRuntimeForPair, static_cast<uint16_t>(function_id), 785 Output(Bytecode::kCallRuntimeForPair, static_cast<uint16_t>(function_id),
781 RegisterOperand(args.first_register()), 786 RegisterOperand(args.first_register()),
782 UnsignedOperand(args.register_count()), RegisterOperand(first_return)); 787 UnsignedOperand(args.register_count()),
788 RegisterOperand(return_pair.first_register()));
783 return *this; 789 return *this;
784 } 790 }
785 791
786 BytecodeArrayBuilder& BytecodeArrayBuilder::CallRuntimeForPair( 792 BytecodeArrayBuilder& BytecodeArrayBuilder::CallRuntimeForPair(
787 Runtime::FunctionId function_id, Register arg, Register first_return) { 793 Runtime::FunctionId function_id, Register arg, RegisterList return_pair) {
788 return CallRuntimeForPair(function_id, RegisterList(arg.index(), 1), 794 return CallRuntimeForPair(function_id, RegisterList(arg.index(), 1),
789 first_return); 795 return_pair);
790 } 796 }
791 797
792 BytecodeArrayBuilder& BytecodeArrayBuilder::CallJSRuntime(int context_index, 798 BytecodeArrayBuilder& BytecodeArrayBuilder::CallJSRuntime(int context_index,
793 RegisterList args) { 799 RegisterList args) {
794 Output(Bytecode::kCallJSRuntime, UnsignedOperand(context_index), 800 Output(Bytecode::kCallJSRuntime, UnsignedOperand(context_index),
795 RegisterOperand(args.first_register()), 801 RegisterOperand(args.first_register()),
796 UnsignedOperand(args.register_count())); 802 UnsignedOperand(args.register_count()));
797 return *this; 803 return *this;
798 } 804 }
799 805
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
924 UNREACHABLE(); // Dealt with in kRegList above. 930 UNREACHABLE(); // Dealt with in kRegList above.
925 } 931 }
926 } 932 }
927 933
928 return true; 934 return true;
929 } 935 }
930 936
931 } // namespace interpreter 937 } // namespace interpreter
932 } // namespace internal 938 } // namespace internal
933 } // namespace v8 939 } // namespace v8
OLDNEW
« no previous file with comments | « src/interpreter/bytecode-array-builder.h ('k') | src/interpreter/bytecode-generator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698