| 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 #if V8_TARGET_ARCH_X87 | 5 #if V8_TARGET_ARCH_X87 | 
| 6 | 6 | 
| 7 #include "src/crankshaft/x87/lithium-codegen-x87.h" | 7 #include "src/crankshaft/x87/lithium-codegen-x87.h" | 
| 8 | 8 | 
| 9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" | 
| 10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" | 
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 139     bool need_write_barrier = true; | 139     bool need_write_barrier = true; | 
| 140     // Argument to NewContext is the function, which is still in edi. | 140     // Argument to NewContext is the function, which is still in edi. | 
| 141     int slots = info_->scope()->num_heap_slots() - Context::MIN_CONTEXT_SLOTS; | 141     int slots = info_->scope()->num_heap_slots() - Context::MIN_CONTEXT_SLOTS; | 
| 142     Safepoint::DeoptMode deopt_mode = Safepoint::kNoLazyDeopt; | 142     Safepoint::DeoptMode deopt_mode = Safepoint::kNoLazyDeopt; | 
| 143     if (info()->scope()->is_script_scope()) { | 143     if (info()->scope()->is_script_scope()) { | 
| 144       __ push(edi); | 144       __ push(edi); | 
| 145       __ Push(info()->scope()->scope_info()); | 145       __ Push(info()->scope()->scope_info()); | 
| 146       __ CallRuntime(Runtime::kNewScriptContext); | 146       __ CallRuntime(Runtime::kNewScriptContext); | 
| 147       deopt_mode = Safepoint::kLazyDeopt; | 147       deopt_mode = Safepoint::kLazyDeopt; | 
| 148     } else { | 148     } else { | 
| 149       FastNewFunctionContextStub stub(isolate()); | 149       if (slots <= FastNewFunctionContextStub::kMaximumSlots) { | 
| 150       __ mov(FastNewFunctionContextDescriptor::SlotsRegister(), | 150         FastNewFunctionContextStub stub(isolate()); | 
| 151              Immediate(slots)); | 151         __ mov(FastNewFunctionContextDescriptor::SlotsRegister(), | 
| 152       __ CallStub(&stub); | 152                Immediate(slots)); | 
| 153       // Result of FastNewFunctionContextStub is always in new space. | 153         __ CallStub(&stub); | 
| 154       need_write_barrier = false; | 154         // Result of FastNewFunctionContextStub is always in new space. | 
|  | 155         need_write_barrier = false; | 
|  | 156       } else { | 
|  | 157         __ push(edi); | 
|  | 158         __ CallRuntime(Runtime::kNewFunctionContext); | 
|  | 159       } | 
| 155     } | 160     } | 
| 156     RecordSafepoint(deopt_mode); | 161     RecordSafepoint(deopt_mode); | 
| 157 | 162 | 
| 158     // Context is returned in eax.  It replaces the context passed to us. | 163     // Context is returned in eax.  It replaces the context passed to us. | 
| 159     // It's saved in the stack and kept live in esi. | 164     // It's saved in the stack and kept live in esi. | 
| 160     __ mov(esi, eax); | 165     __ mov(esi, eax); | 
| 161     __ mov(Operand(ebp, StandardFrameConstants::kContextOffset), eax); | 166     __ mov(Operand(ebp, StandardFrameConstants::kContextOffset), eax); | 
| 162 | 167 | 
| 163     // Copy parameters into context if necessary. | 168     // Copy parameters into context if necessary. | 
| 164     int num_parameters = info()->scope()->num_parameters(); | 169     int num_parameters = info()->scope()->num_parameters(); | 
| (...skipping 5488 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5653   __ bind(deferred->exit()); | 5658   __ bind(deferred->exit()); | 
| 5654   __ bind(&done); | 5659   __ bind(&done); | 
| 5655 } | 5660 } | 
| 5656 | 5661 | 
| 5657 #undef __ | 5662 #undef __ | 
| 5658 | 5663 | 
| 5659 }  // namespace internal | 5664 }  // namespace internal | 
| 5660 }  // namespace v8 | 5665 }  // namespace v8 | 
| 5661 | 5666 | 
| 5662 #endif  // V8_TARGET_ARCH_X87 | 5667 #endif  // V8_TARGET_ARCH_X87 | 
| OLD | NEW | 
|---|