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/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/pipeline.h" | 8 #include "src/compiler/pipeline.h" |
9 #include "src/compiler/scheduler.h" | 9 #include "src/compiler/scheduler.h" |
10 | 10 |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 const CallDescriptor* descriptor = | 209 const CallDescriptor* descriptor = |
210 Linkage::GetSimplifiedCDescriptor(zone(), builder.Build()); | 210 Linkage::GetSimplifiedCDescriptor(zone(), builder.Build()); |
211 | 211 |
212 Node* call = graph()->NewNode(common()->Call(descriptor), function, arg0, | 212 Node* call = graph()->NewNode(common()->Call(descriptor), function, arg0, |
213 arg1, arg2, arg3, arg4, arg5, arg6, arg7); | 213 arg1, arg2, arg3, arg4, arg5, arg6, arg7); |
214 schedule()->AddNode(CurrentBlock(), call); | 214 schedule()->AddNode(CurrentBlock(), call); |
215 return call; | 215 return call; |
216 } | 216 } |
217 | 217 |
218 | 218 |
| 219 Node* RawMachineAssembler::TailCallInterpreterDispatch( |
| 220 const CallDescriptor* call_descriptor, Node* target, Node* arg1, Node* arg2, |
| 221 Node* arg3, Node* arg4, Node* arg5) { |
| 222 Node* tail_call = |
| 223 graph()->NewNode(common()->TailCall(call_descriptor), target, arg1, arg2, |
| 224 arg3, arg4, arg5, graph()->start(), graph()->start()); |
| 225 schedule()->AddTailCall(CurrentBlock(), tail_call); |
| 226 return tail_call; |
| 227 } |
| 228 |
| 229 |
219 void RawMachineAssembler::Bind(Label* label) { | 230 void RawMachineAssembler::Bind(Label* label) { |
220 DCHECK(current_block_ == nullptr); | 231 DCHECK(current_block_ == nullptr); |
221 DCHECK(!label->bound_); | 232 DCHECK(!label->bound_); |
222 label->bound_ = true; | 233 label->bound_ = true; |
223 current_block_ = EnsureBlock(label); | 234 current_block_ = EnsureBlock(label); |
224 } | 235 } |
225 | 236 |
226 | 237 |
227 BasicBlock* RawMachineAssembler::Use(Label* label) { | 238 BasicBlock* RawMachineAssembler::Use(Label* label) { |
228 label->used_ = true; | 239 label->used_ = true; |
(...skipping 18 matching lines...) Expand all Loading... |
247 DCHECK_NOT_NULL(schedule_); | 258 DCHECK_NOT_NULL(schedule_); |
248 DCHECK(current_block_ != nullptr); | 259 DCHECK(current_block_ != nullptr); |
249 Node* node = graph()->NewNode(op, input_count, inputs); | 260 Node* node = graph()->NewNode(op, input_count, inputs); |
250 schedule()->AddNode(CurrentBlock(), node); | 261 schedule()->AddNode(CurrentBlock(), node); |
251 return node; | 262 return node; |
252 } | 263 } |
253 | 264 |
254 } // namespace compiler | 265 } // namespace compiler |
255 } // namespace internal | 266 } // namespace internal |
256 } // namespace v8 | 267 } // namespace v8 |
OLD | NEW |