OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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/js-create-lowering.h" | 5 #include "src/compiler/js-create-lowering.h" |
6 | 6 |
7 #include "src/allocation-site-scopes.h" | 7 #include "src/allocation-site-scopes.h" |
8 #include "src/code-factory.h" | 8 #include "src/code-factory.h" |
9 #include "src/compilation-dependencies.h" | 9 #include "src/compilation-dependencies.h" |
10 #include "src/compiler/access-builder.h" | 10 #include "src/compiler/access-builder.h" |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 node->InsertInput(graph()->zone(), 0, stub_code); | 304 node->InsertInput(graph()->zone(), 0, stub_code); |
305 node->RemoveInput(3); // Remove the frame state. | 305 node->RemoveInput(3); // Remove the frame state. |
306 NodeProperties::ChangeOp(node, new_op); | 306 NodeProperties::ChangeOp(node, new_op); |
307 return Changed(node); | 307 return Changed(node); |
308 } | 308 } |
309 case CreateArgumentsType::kUnmappedArguments: { | 309 case CreateArgumentsType::kUnmappedArguments: { |
310 Callable callable = CodeFactory::FastNewStrictArguments(isolate()); | 310 Callable callable = CodeFactory::FastNewStrictArguments(isolate()); |
311 Operator::Properties properties = node->op()->properties(); | 311 Operator::Properties properties = node->op()->properties(); |
312 CallDescriptor* desc = Linkage::GetStubCallDescriptor( | 312 CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
313 isolate(), graph()->zone(), callable.descriptor(), 0, | 313 isolate(), graph()->zone(), callable.descriptor(), 0, |
314 CallDescriptor::kNoFlags, properties); | 314 CallDescriptor::kNeedsFrameState, properties); |
315 const Operator* new_op = common()->Call(desc); | 315 const Operator* new_op = common()->Call(desc); |
316 Node* stub_code = jsgraph()->HeapConstant(callable.code()); | 316 Node* stub_code = jsgraph()->HeapConstant(callable.code()); |
317 node->InsertInput(graph()->zone(), 0, stub_code); | 317 node->InsertInput(graph()->zone(), 0, stub_code); |
318 node->RemoveInput(3); // Remove the frame state. | |
319 NodeProperties::ChangeOp(node, new_op); | 318 NodeProperties::ChangeOp(node, new_op); |
320 return Changed(node); | 319 return Changed(node); |
321 } | 320 } |
322 case CreateArgumentsType::kRestParameter: { | 321 case CreateArgumentsType::kRestParameter: { |
323 Callable callable = CodeFactory::FastNewRestParameter(isolate()); | 322 Callable callable = CodeFactory::FastNewRestParameter(isolate()); |
324 Operator::Properties properties = node->op()->properties(); | 323 Operator::Properties properties = node->op()->properties(); |
325 CallDescriptor* desc = Linkage::GetStubCallDescriptor( | 324 CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
326 isolate(), graph()->zone(), callable.descriptor(), 0, | 325 isolate(), graph()->zone(), callable.descriptor(), 0, |
327 CallDescriptor::kNoFlags, properties); | 326 CallDescriptor::kNeedsFrameState, properties); |
328 const Operator* new_op = common()->Call(desc); | 327 const Operator* new_op = common()->Call(desc); |
329 Node* stub_code = jsgraph()->HeapConstant(callable.code()); | 328 Node* stub_code = jsgraph()->HeapConstant(callable.code()); |
330 node->InsertInput(graph()->zone(), 0, stub_code); | 329 node->InsertInput(graph()->zone(), 0, stub_code); |
331 node->RemoveInput(3); // Remove the frame state. | |
332 NodeProperties::ChangeOp(node, new_op); | 330 NodeProperties::ChangeOp(node, new_op); |
333 return Changed(node); | 331 return Changed(node); |
334 } | 332 } |
335 } | 333 } |
336 UNREACHABLE(); | 334 UNREACHABLE(); |
337 } else if (outer_state->opcode() == IrOpcode::kFrameState) { | 335 } else if (outer_state->opcode() == IrOpcode::kFrameState) { |
338 // Use inline allocation for all mapped arguments objects within inlined | 336 // Use inline allocation for all mapped arguments objects within inlined |
339 // (i.e. non-outermost) frames, independent of the object size. | 337 // (i.e. non-outermost) frames, independent of the object size. |
340 if (type == CreateArgumentsType::kMappedArguments) { | 338 if (type == CreateArgumentsType::kMappedArguments) { |
341 Handle<SharedFunctionInfo> shared; | 339 Handle<SharedFunctionInfo> shared; |
(...skipping 785 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1127 return jsgraph()->simplified(); | 1125 return jsgraph()->simplified(); |
1128 } | 1126 } |
1129 | 1127 |
1130 MachineOperatorBuilder* JSCreateLowering::machine() const { | 1128 MachineOperatorBuilder* JSCreateLowering::machine() const { |
1131 return jsgraph()->machine(); | 1129 return jsgraph()->machine(); |
1132 } | 1130 } |
1133 | 1131 |
1134 } // namespace compiler | 1132 } // namespace compiler |
1135 } // namespace internal | 1133 } // namespace internal |
1136 } // namespace v8 | 1134 } // namespace v8 |
OLD | NEW |