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 <sstream> | 5 #include <sstream> |
6 | 6 |
7 #include "src/v8.h" | 7 #include "src/v8.h" |
8 | 8 |
9 #if V8_TARGET_ARCH_IA32 | 9 #if V8_TARGET_ARCH_IA32 |
10 | 10 |
(...skipping 2375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2386 LInstruction* LChunkBuilder::DoTrapAllocationMemento( | 2386 LInstruction* LChunkBuilder::DoTrapAllocationMemento( |
2387 HTrapAllocationMemento* instr) { | 2387 HTrapAllocationMemento* instr) { |
2388 LOperand* object = UseRegister(instr->object()); | 2388 LOperand* object = UseRegister(instr->object()); |
2389 LOperand* temp = TempRegister(); | 2389 LOperand* temp = TempRegister(); |
2390 LTrapAllocationMemento* result = | 2390 LTrapAllocationMemento* result = |
2391 new(zone()) LTrapAllocationMemento(object, temp); | 2391 new(zone()) LTrapAllocationMemento(object, temp); |
2392 return AssignEnvironment(result); | 2392 return AssignEnvironment(result); |
2393 } | 2393 } |
2394 | 2394 |
2395 | 2395 |
| 2396 LInstruction* LChunkBuilder::DoMaybeGrowElements(HMaybeGrowElements* instr) { |
| 2397 info()->MarkAsDeferredCalling(); |
| 2398 LOperand* context = UseFixed(instr->context(), esi); |
| 2399 LOperand* object = Use(instr->object()); |
| 2400 LOperand* elements = Use(instr->elements()); |
| 2401 LOperand* key = UseRegisterOrConstant(instr->key()); |
| 2402 LOperand* current_capacity = UseRegisterOrConstant(instr->current_capacity()); |
| 2403 |
| 2404 LMaybeGrowElements* result = new (zone()) |
| 2405 LMaybeGrowElements(context, object, elements, key, current_capacity); |
| 2406 DefineFixed(result, eax); |
| 2407 return AssignPointerMap(AssignEnvironment(result)); |
| 2408 } |
| 2409 |
| 2410 |
2396 LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) { | 2411 LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) { |
2397 bool is_in_object = instr->access().IsInobject(); | 2412 bool is_in_object = instr->access().IsInobject(); |
2398 bool is_external_location = instr->access().IsExternalMemory() && | 2413 bool is_external_location = instr->access().IsExternalMemory() && |
2399 instr->access().offset() == 0; | 2414 instr->access().offset() == 0; |
2400 bool needs_write_barrier = instr->NeedsWriteBarrier(); | 2415 bool needs_write_barrier = instr->NeedsWriteBarrier(); |
2401 bool needs_write_barrier_for_map = instr->has_transition() && | 2416 bool needs_write_barrier_for_map = instr->has_transition() && |
2402 instr->NeedsWriteBarrierForMap(); | 2417 instr->NeedsWriteBarrierForMap(); |
2403 | 2418 |
2404 LOperand* obj; | 2419 LOperand* obj; |
2405 if (needs_write_barrier) { | 2420 if (needs_write_barrier) { |
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2730 LOperand* function = UseRegisterAtStart(instr->function()); | 2745 LOperand* function = UseRegisterAtStart(instr->function()); |
2731 LAllocateBlockContext* result = | 2746 LAllocateBlockContext* result = |
2732 new(zone()) LAllocateBlockContext(context, function); | 2747 new(zone()) LAllocateBlockContext(context, function); |
2733 return MarkAsCall(DefineFixed(result, esi), instr); | 2748 return MarkAsCall(DefineFixed(result, esi), instr); |
2734 } | 2749 } |
2735 | 2750 |
2736 | 2751 |
2737 } } // namespace v8::internal | 2752 } } // namespace v8::internal |
2738 | 2753 |
2739 #endif // V8_TARGET_ARCH_IA32 | 2754 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |