OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_PPC | 7 #if V8_TARGET_ARCH_PPC |
8 | 8 |
9 #include "src/interface-descriptors.h" | 9 #include "src/interface-descriptors.h" |
10 | 10 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 void FastCloneShallowObjectDescriptor::Initialize( | 91 void FastCloneShallowObjectDescriptor::Initialize( |
92 CallInterfaceDescriptorData* data) { | 92 CallInterfaceDescriptorData* data) { |
93 Register registers[] = {cp, r6, r5, r4, r3}; | 93 Register registers[] = {cp, r6, r5, r4, r3}; |
94 data->Initialize(arraysize(registers), registers, NULL); | 94 data->Initialize(arraysize(registers), registers, NULL); |
95 } | 95 } |
96 | 96 |
97 | 97 |
98 void CreateAllocationSiteDescriptor::Initialize( | 98 void CreateAllocationSiteDescriptor::Initialize( |
99 CallInterfaceDescriptorData* data) { | 99 CallInterfaceDescriptorData* data) { |
100 Register registers[] = {cp, r5, r6}; | 100 Register registers[] = {cp, r5, r6}; |
101 data->Initialize(arraysize(registers), registers, NULL); | 101 Representation representations[] = {Representation::Tagged(), |
| 102 Representation::Tagged(), |
| 103 Representation::Smi()}; |
| 104 data->Initialize(arraysize(registers), registers, representations); |
102 } | 105 } |
103 | 106 |
104 | 107 |
| 108 void CreateWeakCellDescriptor::Initialize(CallInterfaceDescriptorData* data) { |
| 109 Register registers[] = {cp, r5, r6, r4}; |
| 110 Representation representations[] = { |
| 111 Representation::Tagged(), Representation::Tagged(), Representation::Smi(), |
| 112 Representation::Tagged()}; |
| 113 data->Initialize(arraysize(registers), registers, representations); |
| 114 } |
| 115 |
| 116 |
105 void StoreArrayLiteralElementDescriptor::Initialize( | 117 void StoreArrayLiteralElementDescriptor::Initialize( |
106 CallInterfaceDescriptorData* data) { | 118 CallInterfaceDescriptorData* data) { |
107 Register registers[] = {cp, r6, r3}; | 119 Register registers[] = {cp, r6, r3}; |
108 data->Initialize(arraysize(registers), registers, NULL); | 120 data->Initialize(arraysize(registers), registers, NULL); |
109 } | 121 } |
110 | 122 |
111 | 123 |
112 void CallFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 124 void CallFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) { |
113 Register registers[] = {cp, r4}; | 125 Register registers[] = {cp, r4}; |
114 data->Initialize(arraysize(registers), registers, NULL); | 126 data->Initialize(arraysize(registers), registers, NULL); |
115 } | 127 } |
116 | 128 |
117 | 129 |
118 void CallFunctionWithFeedbackDescriptor::Initialize( | 130 void CallFunctionWithFeedbackDescriptor::Initialize( |
119 CallInterfaceDescriptorData* data) { | 131 CallInterfaceDescriptorData* data) { |
120 Register registers[] = {cp, r4, r6}; | 132 Register registers[] = {cp, r4, r6}; |
121 Representation representations[] = {Representation::Tagged(), | 133 Representation representations[] = {Representation::Tagged(), |
122 Representation::Tagged(), | 134 Representation::Tagged(), |
123 Representation::Smi()}; | 135 Representation::Smi()}; |
124 data->Initialize(arraysize(registers), registers, representations); | 136 data->Initialize(arraysize(registers), registers, representations); |
125 } | 137 } |
126 | 138 |
127 | 139 |
| 140 void CallFunctionWithFeedbackAndVectorDescriptor::Initialize( |
| 141 CallInterfaceDescriptorData* data) { |
| 142 Register registers[] = {cp, r4, r6, r5}; |
| 143 Representation representations[] = { |
| 144 Representation::Tagged(), Representation::Tagged(), Representation::Smi(), |
| 145 Representation::Tagged()}; |
| 146 data->Initialize(arraysize(registers), registers, representations); |
| 147 } |
| 148 |
| 149 |
128 void CallConstructDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 150 void CallConstructDescriptor::Initialize(CallInterfaceDescriptorData* data) { |
129 // r3 : number of arguments | 151 // r3 : number of arguments |
130 // r4 : the function to call | 152 // r4 : the function to call |
131 // r5 : feedback vector | 153 // r5 : feedback vector |
132 // r6 : (only if r5 is not the megamorphic symbol) slot in feedback | 154 // r6 : (only if r5 is not the megamorphic symbol) slot in feedback |
133 // vector (Smi) | 155 // vector (Smi) |
134 // TODO(turbofan): So far we don't gather type feedback and hence skip the | 156 // TODO(turbofan): So far we don't gather type feedback and hence skip the |
135 // slot parameter, but ArrayConstructStub needs the vector to be undefined. | 157 // slot parameter, but ArrayConstructStub needs the vector to be undefined. |
136 Register registers[] = {cp, r3, r4, r5}; | 158 Register registers[] = {cp, r3, r4, r5}; |
137 data->Initialize(arraysize(registers), registers, NULL); | 159 data->Initialize(arraysize(registers), registers, NULL); |
138 } | 160 } |
139 | 161 |
140 | 162 |
141 void RegExpConstructResultDescriptor::Initialize( | 163 void RegExpConstructResultDescriptor::Initialize( |
142 CallInterfaceDescriptorData* data) { | 164 CallInterfaceDescriptorData* data) { |
143 Register registers[] = {cp, r5, r4, r3}; | 165 Register registers[] = {cp, r5, r4, r3}; |
144 data->Initialize(arraysize(registers), registers, NULL); | 166 data->Initialize(arraysize(registers), registers, NULL); |
145 } | 167 } |
146 | 168 |
147 | 169 |
148 void TransitionElementsKindDescriptor::Initialize( | 170 void TransitionElementsKindDescriptor::Initialize( |
149 CallInterfaceDescriptorData* data) { | 171 CallInterfaceDescriptorData* data) { |
150 Register registers[] = {cp, r3, r4}; | 172 Register registers[] = {cp, r3, r4}; |
151 data->Initialize(arraysize(registers), registers, NULL); | 173 data->Initialize(arraysize(registers), registers, NULL); |
152 } | 174 } |
153 | 175 |
154 | 176 |
| 177 void AllocateHeapNumberDescriptor::Initialize( |
| 178 CallInterfaceDescriptorData* data) { |
| 179 // register state |
| 180 // cp -- context |
| 181 Register registers[] = {cp}; |
| 182 data->Initialize(arraysize(registers), registers, nullptr); |
| 183 } |
| 184 |
| 185 |
155 void ArrayConstructorConstantArgCountDescriptor::Initialize( | 186 void ArrayConstructorConstantArgCountDescriptor::Initialize( |
156 CallInterfaceDescriptorData* data) { | 187 CallInterfaceDescriptorData* data) { |
157 // register state | 188 // register state |
158 // cp -- context | 189 // cp -- context |
159 // r3 -- number of arguments | 190 // r3 -- number of arguments |
160 // r4 -- function | 191 // r4 -- function |
161 // r5 -- allocation site with elements kind | 192 // r5 -- allocation site with elements kind |
162 Register registers[] = {cp, r4, r5}; | 193 Register registers[] = {cp, r4, r5}; |
163 data->Initialize(arraysize(registers), registers, NULL); | 194 data->Initialize(arraysize(registers), registers, NULL); |
164 } | 195 } |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
283 } | 314 } |
284 | 315 |
285 | 316 |
286 void ApiFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) { | 317 void ApiFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) { |
287 Register registers[] = { | 318 Register registers[] = { |
288 cp, // context | 319 cp, // context |
289 r3, // callee | 320 r3, // callee |
290 r7, // call_data | 321 r7, // call_data |
291 r5, // holder | 322 r5, // holder |
292 r4, // api_function_address | 323 r4, // api_function_address |
| 324 r6, // actual number of arguments |
| 325 }; |
| 326 Representation representations[] = { |
| 327 Representation::Tagged(), // context |
| 328 Representation::Tagged(), // callee |
| 329 Representation::Tagged(), // call_data |
| 330 Representation::Tagged(), // holder |
| 331 Representation::External(), // api_function_address |
| 332 Representation::Integer32(), // actual number of arguments |
| 333 }; |
| 334 data->Initialize(arraysize(registers), registers, representations); |
| 335 } |
| 336 |
| 337 |
| 338 void ApiAccessorDescriptor::Initialize(CallInterfaceDescriptorData* data) { |
| 339 Register registers[] = { |
| 340 cp, // context |
| 341 r3, // callee |
| 342 r7, // call_data |
| 343 r5, // holder |
| 344 r4, // api_function_address |
293 }; | 345 }; |
294 Representation representations[] = { | 346 Representation representations[] = { |
295 Representation::Tagged(), // context | 347 Representation::Tagged(), // context |
296 Representation::Tagged(), // callee | 348 Representation::Tagged(), // callee |
297 Representation::Tagged(), // call_data | 349 Representation::Tagged(), // call_data |
298 Representation::Tagged(), // holder | 350 Representation::Tagged(), // holder |
299 Representation::External(), // api_function_address | 351 Representation::External(), // api_function_address |
300 }; | 352 }; |
301 data->Initialize(arraysize(registers), registers, representations); | 353 data->Initialize(arraysize(registers), registers, representations); |
302 } | 354 } |
303 } | 355 } |
304 } // namespace v8::internal | 356 } // namespace v8::internal |
305 | 357 |
306 #endif // V8_TARGET_ARCH_PPC | 358 #endif // V8_TARGET_ARCH_PPC |
OLD | NEW |