OLD | NEW |
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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/code-stubs.h" | 7 #include "src/code-stubs.h" |
8 #include "src/hydrogen-osr.h" | 8 #include "src/hydrogen-osr.h" |
9 #include "src/mips64/lithium-codegen-mips64.h" | 9 #include "src/mips64/lithium-codegen-mips64.h" |
10 #include "src/mips64/lithium-gap-resolver-mips64.h" | 10 #include "src/mips64/lithium-gap-resolver-mips64.h" |
(...skipping 5477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5488 } | 5488 } |
5489 } | 5489 } |
5490 | 5490 |
5491 | 5491 |
5492 void LCodeGen::DoFunctionLiteral(LFunctionLiteral* instr) { | 5492 void LCodeGen::DoFunctionLiteral(LFunctionLiteral* instr) { |
5493 DCHECK(ToRegister(instr->context()).is(cp)); | 5493 DCHECK(ToRegister(instr->context()).is(cp)); |
5494 // Use the fast case closure allocation code that allocates in new | 5494 // Use the fast case closure allocation code that allocates in new |
5495 // space for nested functions that don't need literals cloning. | 5495 // space for nested functions that don't need literals cloning. |
5496 bool pretenure = instr->hydrogen()->pretenure(); | 5496 bool pretenure = instr->hydrogen()->pretenure(); |
5497 if (!pretenure && instr->hydrogen()->has_no_literals()) { | 5497 if (!pretenure && instr->hydrogen()->has_no_literals()) { |
5498 FastNewClosureStub stub(isolate(), | 5498 FastNewClosureStub stub(isolate(), instr->hydrogen()->strict_mode(), |
5499 instr->hydrogen()->strict_mode(), | 5499 instr->hydrogen()->is_generator(), |
5500 instr->hydrogen()->is_generator()); | 5500 instr->hydrogen()->is_concise_method()); |
5501 __ li(a2, Operand(instr->hydrogen()->shared_info())); | 5501 __ li(a2, Operand(instr->hydrogen()->shared_info())); |
5502 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); | 5502 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); |
5503 } else { | 5503 } else { |
5504 __ li(a2, Operand(instr->hydrogen()->shared_info())); | 5504 __ li(a2, Operand(instr->hydrogen()->shared_info())); |
5505 __ li(a1, Operand(pretenure ? factory()->true_value() | 5505 __ li(a1, Operand(pretenure ? factory()->true_value() |
5506 : factory()->false_value())); | 5506 : factory()->false_value())); |
5507 __ Push(cp, a2, a1); | 5507 __ Push(cp, a2, a1); |
5508 CallRuntime(Runtime::kNewClosure, 3, instr); | 5508 CallRuntime(Runtime::kNewClosure, 3, instr); |
5509 } | 5509 } |
5510 } | 5510 } |
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5941 __ li(at, scope_info); | 5941 __ li(at, scope_info); |
5942 __ Push(at, ToRegister(instr->function())); | 5942 __ Push(at, ToRegister(instr->function())); |
5943 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 5943 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
5944 RecordSafepoint(Safepoint::kNoLazyDeopt); | 5944 RecordSafepoint(Safepoint::kNoLazyDeopt); |
5945 } | 5945 } |
5946 | 5946 |
5947 | 5947 |
5948 #undef __ | 5948 #undef __ |
5949 | 5949 |
5950 } } // namespace v8::internal | 5950 } } // namespace v8::internal |
OLD | NEW |