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

Side by Side Diff: src/compiler/raw-machine-assembler.cc

Issue 2580823002: [turbofan] Combine family of CallRuntime() methods into single imeplementation. (Closed)
Patch Set: Addressing comments and fixing Windows builds Created 4 years 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/compiler/raw-machine-assembler.h ('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 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/compiler/raw-machine-assembler.h" 5 #include "src/compiler/raw-machine-assembler.h"
6 6
7 #include "src/code-factory.h" 7 #include "src/code-factory.h"
8 #include "src/compiler/node-properties.h" 8 #include "src/compiler/node-properties.h"
9 #include "src/compiler/pipeline.h" 9 #include "src/compiler/pipeline.h"
10 #include "src/compiler/scheduler.h" 10 #include "src/compiler/scheduler.h"
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 Node** buffer = zone()->NewArray<Node*>(input_count); 193 Node** buffer = zone()->NewArray<Node*>(input_count);
194 int index = 0; 194 int index = 0;
195 buffer[index++] = function; 195 buffer[index++] = function;
196 for (int i = 0; i < param_count; i++) { 196 for (int i = 0; i < param_count; i++) {
197 buffer[index++] = args[i]; 197 buffer[index++] = args[i];
198 } 198 }
199 buffer[index++] = frame_state; 199 buffer[index++] = frame_state;
200 return AddNode(common()->Call(desc), input_count, buffer); 200 return AddNode(common()->Call(desc), input_count, buffer);
201 } 201 }
202 202
203 Node* RawMachineAssembler::CallRuntime0(Runtime::FunctionId function,
204 Node* context) {
205 CallDescriptor* descriptor = Linkage::GetRuntimeCallDescriptor(
206 zone(), function, 0, Operator::kNoProperties, CallDescriptor::kNoFlags);
207 int return_count = static_cast<int>(descriptor->ReturnCount());
208
209 Node* centry = HeapConstant(CEntryStub(isolate(), return_count).GetCode());
210 Node* ref = AddNode(
211 common()->ExternalConstant(ExternalReference(function, isolate())));
212 Node* arity = Int32Constant(0);
213
214 return AddNode(common()->Call(descriptor), centry, ref, arity, context);
215 }
216
217 Node* RawMachineAssembler::CallRuntime1(Runtime::FunctionId function,
218 Node* arg1, Node* context) {
219 CallDescriptor* descriptor = Linkage::GetRuntimeCallDescriptor(
220 zone(), function, 1, Operator::kNoProperties, CallDescriptor::kNoFlags);
221 int return_count = static_cast<int>(descriptor->ReturnCount());
222
223 Node* centry = HeapConstant(CEntryStub(isolate(), return_count).GetCode());
224 Node* ref = AddNode(
225 common()->ExternalConstant(ExternalReference(function, isolate())));
226 Node* arity = Int32Constant(1);
227
228 return AddNode(common()->Call(descriptor), centry, arg1, ref, arity, context);
229 }
230
231
232 Node* RawMachineAssembler::CallRuntime2(Runtime::FunctionId function,
233 Node* arg1, Node* arg2, Node* context) {
234 CallDescriptor* descriptor = Linkage::GetRuntimeCallDescriptor(
235 zone(), function, 2, Operator::kNoProperties, CallDescriptor::kNoFlags);
236 int return_count = static_cast<int>(descriptor->ReturnCount());
237
238 Node* centry = HeapConstant(CEntryStub(isolate(), return_count).GetCode());
239 Node* ref = AddNode(
240 common()->ExternalConstant(ExternalReference(function, isolate())));
241 Node* arity = Int32Constant(2);
242
243 return AddNode(common()->Call(descriptor), centry, arg1, arg2, ref, arity,
244 context);
245 }
246
247 Node* RawMachineAssembler::CallRuntime3(Runtime::FunctionId function,
248 Node* arg1, Node* arg2, Node* arg3,
249 Node* context) {
250 CallDescriptor* descriptor = Linkage::GetRuntimeCallDescriptor(
251 zone(), function, 3, Operator::kNoProperties, CallDescriptor::kNoFlags);
252 int return_count = static_cast<int>(descriptor->ReturnCount());
253
254 Node* centry = HeapConstant(CEntryStub(isolate(), return_count).GetCode());
255 Node* ref = AddNode(
256 common()->ExternalConstant(ExternalReference(function, isolate())));
257 Node* arity = Int32Constant(3);
258
259 return AddNode(common()->Call(descriptor), centry, arg1, arg2, arg3, ref,
260 arity, context);
261 }
262
263 Node* RawMachineAssembler::CallRuntime4(Runtime::FunctionId function,
264 Node* arg1, Node* arg2, Node* arg3,
265 Node* arg4, Node* context) {
266 CallDescriptor* descriptor = Linkage::GetRuntimeCallDescriptor(
267 zone(), function, 4, Operator::kNoProperties, CallDescriptor::kNoFlags);
268 int return_count = static_cast<int>(descriptor->ReturnCount());
269
270 Node* centry = HeapConstant(CEntryStub(isolate(), return_count).GetCode());
271 Node* ref = AddNode(
272 common()->ExternalConstant(ExternalReference(function, isolate())));
273 Node* arity = Int32Constant(4);
274
275 return AddNode(common()->Call(descriptor), centry, arg1, arg2, arg3, arg4,
276 ref, arity, context);
277 }
278
279 Node* RawMachineAssembler::CallRuntime5(Runtime::FunctionId function,
280 Node* arg1, Node* arg2, Node* arg3,
281 Node* arg4, Node* arg5, Node* context) {
282 CallDescriptor* descriptor = Linkage::GetRuntimeCallDescriptor(
283 zone(), function, 5, Operator::kNoProperties, CallDescriptor::kNoFlags);
284 int return_count = static_cast<int>(descriptor->ReturnCount());
285
286 Node* centry = HeapConstant(CEntryStub(isolate(), return_count).GetCode());
287 Node* ref = AddNode(
288 common()->ExternalConstant(ExternalReference(function, isolate())));
289 Node* arity = Int32Constant(5);
290
291 return AddNode(common()->Call(descriptor), centry, arg1, arg2, arg3, arg4,
292 arg5, ref, arity, context);
293 }
294
295 Node* RawMachineAssembler::TailCallN(CallDescriptor* desc, Node* function, 203 Node* RawMachineAssembler::TailCallN(CallDescriptor* desc, Node* function,
296 Node** args) { 204 Node** args) {
297 int param_count = static_cast<int>(desc->ParameterCount()); 205 int param_count = static_cast<int>(desc->ParameterCount());
298 int input_count = param_count + 1; 206 int input_count = param_count + 1;
299 Node** buffer = zone()->NewArray<Node*>(input_count); 207 Node** buffer = zone()->NewArray<Node*>(input_count);
300 int index = 0; 208 int index = 0;
301 buffer[index++] = function; 209 buffer[index++] = function;
302 for (int i = 0; i < param_count; i++) { 210 for (int i = 0; i < param_count; i++) {
303 buffer[index++] = args[i]; 211 buffer[index++] = args[i];
304 } 212 }
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 // The raw machine assembler nodes do not have effect and control inputs, 490 // The raw machine assembler nodes do not have effect and control inputs,
583 // so we disable checking input counts here. 491 // so we disable checking input counts here.
584 return graph()->NewNodeUnchecked(op, input_count, inputs); 492 return graph()->NewNodeUnchecked(op, input_count, inputs);
585 } 493 }
586 494
587 RawMachineLabel::~RawMachineLabel() { DCHECK(bound_ || !used_); } 495 RawMachineLabel::~RawMachineLabel() { DCHECK(bound_ || !used_); }
588 496
589 } // namespace compiler 497 } // namespace compiler
590 } // namespace internal 498 } // namespace internal
591 } // namespace v8 499 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/raw-machine-assembler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698