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

Side by Side Diff: src/crankshaft/lithium.cc

Issue 2092413002: [RegisterConfiguration] Streamline access to arch defaults, simplify Registers. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix compile. Created 4 years, 5 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/crankshaft/ia32/lithium-gap-resolver-ia32.cc ('k') | src/crankshaft/lithium-allocator.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 #include "src/crankshaft/lithium.h" 5 #include "src/crankshaft/lithium.h"
6 6
7 #include "src/ast/scopes.h" 7 #include "src/ast/scopes.h"
8 8
9 #if V8_TARGET_ARCH_IA32 9 #if V8_TARGET_ARCH_IA32
10 #include "src/crankshaft/ia32/lithium-ia32.h" // NOLINT 10 #include "src/crankshaft/ia32/lithium-ia32.h" // NOLINT
(...skipping 22 matching lines...) Expand all
33 #elif V8_TARGET_ARCH_S390 33 #elif V8_TARGET_ARCH_S390
34 #include "src/crankshaft/s390/lithium-s390.h" // NOLINT 34 #include "src/crankshaft/s390/lithium-s390.h" // NOLINT
35 #include "src/crankshaft/s390/lithium-codegen-s390.h" // NOLINT 35 #include "src/crankshaft/s390/lithium-codegen-s390.h" // NOLINT
36 #else 36 #else
37 #error "Unknown architecture." 37 #error "Unknown architecture."
38 #endif 38 #endif
39 39
40 namespace v8 { 40 namespace v8 {
41 namespace internal { 41 namespace internal {
42 42
43 const auto GetRegConfig = RegisterConfiguration::Crankshaft;
43 44
44 void LOperand::PrintTo(StringStream* stream) { 45 void LOperand::PrintTo(StringStream* stream) {
45 LUnallocated* unalloc = NULL; 46 LUnallocated* unalloc = NULL;
46 switch (kind()) { 47 switch (kind()) {
47 case INVALID: 48 case INVALID:
48 stream->Add("(0)"); 49 stream->Add("(0)");
49 break; 50 break;
50 case UNALLOCATED: 51 case UNALLOCATED:
51 unalloc = LUnallocated::cast(this); 52 unalloc = LUnallocated::cast(this);
52 stream->Add("v%d", unalloc->virtual_register()); 53 stream->Add("v%d", unalloc->virtual_register());
53 if (unalloc->basic_policy() == LUnallocated::FIXED_SLOT) { 54 if (unalloc->basic_policy() == LUnallocated::FIXED_SLOT) {
54 stream->Add("(=%dS)", unalloc->fixed_slot_index()); 55 stream->Add("(=%dS)", unalloc->fixed_slot_index());
55 break; 56 break;
56 } 57 }
57 switch (unalloc->extended_policy()) { 58 switch (unalloc->extended_policy()) {
58 case LUnallocated::NONE: 59 case LUnallocated::NONE:
59 break; 60 break;
60 case LUnallocated::FIXED_REGISTER: { 61 case LUnallocated::FIXED_REGISTER: {
61 int reg_index = unalloc->fixed_register_index(); 62 int reg_index = unalloc->fixed_register_index();
62 if (reg_index < 0 || reg_index >= Register::kNumRegisters) { 63 if (reg_index < 0 || reg_index >= Register::kNumRegisters) {
63 stream->Add("(=invalid_reg#%d)", reg_index); 64 stream->Add("(=invalid_reg#%d)", reg_index);
64 } else { 65 } else {
65 const char* register_name = 66 const char* register_name =
66 Register::from_code(reg_index).ToString(); 67 GetRegConfig()->GetGeneralRegisterName(reg_index);
67 stream->Add("(=%s)", register_name); 68 stream->Add("(=%s)", register_name);
68 } 69 }
69 break; 70 break;
70 } 71 }
71 case LUnallocated::FIXED_DOUBLE_REGISTER: { 72 case LUnallocated::FIXED_DOUBLE_REGISTER: {
72 int reg_index = unalloc->fixed_register_index(); 73 int reg_index = unalloc->fixed_register_index();
73 if (reg_index < 0 || reg_index >= DoubleRegister::kMaxNumRegisters) { 74 if (reg_index < 0 || reg_index >= DoubleRegister::kMaxNumRegisters) {
74 stream->Add("(=invalid_double_reg#%d)", reg_index); 75 stream->Add("(=invalid_double_reg#%d)", reg_index);
75 } else { 76 } else {
76 const char* double_register_name = 77 const char* double_register_name =
77 DoubleRegister::from_code(reg_index).ToString(); 78 GetRegConfig()->GetDoubleRegisterName(reg_index);
78 stream->Add("(=%s)", double_register_name); 79 stream->Add("(=%s)", double_register_name);
79 } 80 }
80 break; 81 break;
81 } 82 }
82 case LUnallocated::MUST_HAVE_REGISTER: 83 case LUnallocated::MUST_HAVE_REGISTER:
83 stream->Add("(R)"); 84 stream->Add("(R)");
84 break; 85 break;
85 case LUnallocated::MUST_HAVE_DOUBLE_REGISTER: 86 case LUnallocated::MUST_HAVE_DOUBLE_REGISTER:
86 stream->Add("(D)"); 87 stream->Add("(D)");
87 break; 88 break;
(...skipping 15 matching lines...) Expand all
103 stream->Add("[stack:%d]", index()); 104 stream->Add("[stack:%d]", index());
104 break; 105 break;
105 case DOUBLE_STACK_SLOT: 106 case DOUBLE_STACK_SLOT:
106 stream->Add("[double_stack:%d]", index()); 107 stream->Add("[double_stack:%d]", index());
107 break; 108 break;
108 case REGISTER: { 109 case REGISTER: {
109 int reg_index = index(); 110 int reg_index = index();
110 if (reg_index < 0 || reg_index >= Register::kNumRegisters) { 111 if (reg_index < 0 || reg_index >= Register::kNumRegisters) {
111 stream->Add("(=invalid_reg#%d|R)", reg_index); 112 stream->Add("(=invalid_reg#%d|R)", reg_index);
112 } else { 113 } else {
113 stream->Add("[%s|R]", Register::from_code(reg_index).ToString()); 114 stream->Add("[%s|R]",
115 GetRegConfig()->GetGeneralRegisterName(reg_index));
114 } 116 }
115 break; 117 break;
116 } 118 }
117 case DOUBLE_REGISTER: { 119 case DOUBLE_REGISTER: {
118 int reg_index = index(); 120 int reg_index = index();
119 if (reg_index < 0 || reg_index >= DoubleRegister::kMaxNumRegisters) { 121 if (reg_index < 0 || reg_index >= DoubleRegister::kMaxNumRegisters) {
120 stream->Add("(=invalid_double_reg#%d|R)", reg_index); 122 stream->Add("(=invalid_double_reg#%d|R)", reg_index);
121 } else { 123 } else {
122 stream->Add("[%s|R]", DoubleRegister::from_code(reg_index).ToString()); 124 stream->Add("[%s|R]", GetRegConfig()->GetDoubleRegisterName(reg_index));
123 } 125 }
124 break; 126 break;
125 } 127 }
126 } 128 }
127 } 129 }
128 130
129 131
130 template<LOperand::Kind kOperandKind, int kNumCachedOperands> 132 template<LOperand::Kind kOperandKind, int kNumCachedOperands>
131 LSubKindOperand<kOperandKind, kNumCachedOperands>* 133 LSubKindOperand<kOperandKind, kNumCachedOperands>*
132 LSubKindOperand<kOperandKind, kNumCachedOperands>::cache = NULL; 134 LSubKindOperand<kOperandKind, kNumCachedOperands>::cache = NULL;
(...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 725
724 LPhase::~LPhase() { 726 LPhase::~LPhase() {
725 if (ShouldProduceTraceOutput()) { 727 if (ShouldProduceTraceOutput()) {
726 isolate()->GetHTracer()->TraceLithium(name(), chunk_); 728 isolate()->GetHTracer()->TraceLithium(name(), chunk_);
727 } 729 }
728 } 730 }
729 731
730 732
731 } // namespace internal 733 } // namespace internal
732 } // namespace v8 734 } // namespace v8
OLDNEW
« no previous file with comments | « src/crankshaft/ia32/lithium-gap-resolver-ia32.cc ('k') | src/crankshaft/lithium-allocator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698