| 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/crankshaft/x87/lithium-x87.h" | 5 #include "src/crankshaft/x87/lithium-x87.h" |
| 6 | 6 |
| 7 #include <sstream> | 7 #include <sstream> |
| 8 | 8 |
| 9 #if V8_TARGET_ARCH_X87 | 9 #if V8_TARGET_ARCH_X87 |
| 10 | 10 |
| (...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 int index = GetNextSpillIndex(kind); | 376 int index = GetNextSpillIndex(kind); |
| 377 if (kind == DOUBLE_REGISTERS) { | 377 if (kind == DOUBLE_REGISTERS) { |
| 378 return LDoubleStackSlot::Create(index, zone()); | 378 return LDoubleStackSlot::Create(index, zone()); |
| 379 } else { | 379 } else { |
| 380 DCHECK(kind == GENERAL_REGISTERS); | 380 DCHECK(kind == GENERAL_REGISTERS); |
| 381 return LStackSlot::Create(index, zone()); | 381 return LStackSlot::Create(index, zone()); |
| 382 } | 382 } |
| 383 } | 383 } |
| 384 | 384 |
| 385 | 385 |
| 386 void LLoadGlobalViaContext::PrintDataTo(StringStream* stream) { | |
| 387 stream->Add("depth:%d slot:%d", depth(), slot_index()); | |
| 388 } | |
| 389 | |
| 390 | |
| 391 void LStoreNamedField::PrintDataTo(StringStream* stream) { | 386 void LStoreNamedField::PrintDataTo(StringStream* stream) { |
| 392 object()->PrintTo(stream); | 387 object()->PrintTo(stream); |
| 393 std::ostringstream os; | 388 std::ostringstream os; |
| 394 os << hydrogen()->access() << " <- "; | 389 os << hydrogen()->access() << " <- "; |
| 395 stream->Add(os.str().c_str()); | 390 stream->Add(os.str().c_str()); |
| 396 value()->PrintTo(stream); | 391 value()->PrintTo(stream); |
| 397 } | 392 } |
| 398 | 393 |
| 399 | 394 |
| 400 void LStoreNamedGeneric::PrintDataTo(StringStream* stream) { | 395 void LStoreNamedGeneric::PrintDataTo(StringStream* stream) { |
| 401 object()->PrintTo(stream); | 396 object()->PrintTo(stream); |
| 402 stream->Add("."); | 397 stream->Add("."); |
| 403 stream->Add(String::cast(*name())->ToCString().get()); | 398 stream->Add(String::cast(*name())->ToCString().get()); |
| 404 stream->Add(" <- "); | 399 stream->Add(" <- "); |
| 405 value()->PrintTo(stream); | 400 value()->PrintTo(stream); |
| 406 } | 401 } |
| 407 | 402 |
| 408 | 403 |
| 409 void LStoreGlobalViaContext::PrintDataTo(StringStream* stream) { | |
| 410 stream->Add("depth:%d slot:%d <- ", depth(), slot_index()); | |
| 411 value()->PrintTo(stream); | |
| 412 } | |
| 413 | |
| 414 | |
| 415 void LLoadKeyed::PrintDataTo(StringStream* stream) { | 404 void LLoadKeyed::PrintDataTo(StringStream* stream) { |
| 416 elements()->PrintTo(stream); | 405 elements()->PrintTo(stream); |
| 417 stream->Add("["); | 406 stream->Add("["); |
| 418 key()->PrintTo(stream); | 407 key()->PrintTo(stream); |
| 419 if (hydrogen()->IsDehoisted()) { | 408 if (hydrogen()->IsDehoisted()) { |
| 420 stream->Add(" + %d]", base_offset()); | 409 stream->Add(" + %d]", base_offset()); |
| 421 } else { | 410 } else { |
| 422 stream->Add("]"); | 411 stream->Add("]"); |
| 423 } | 412 } |
| 424 } | 413 } |
| (...skipping 1703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2128 if (instr->HasVectorAndSlot()) { | 2117 if (instr->HasVectorAndSlot()) { |
| 2129 vector = FixedTemp(LoadWithVectorDescriptor::VectorRegister()); | 2118 vector = FixedTemp(LoadWithVectorDescriptor::VectorRegister()); |
| 2130 } | 2119 } |
| 2131 | 2120 |
| 2132 LLoadGlobalGeneric* result = | 2121 LLoadGlobalGeneric* result = |
| 2133 new(zone()) LLoadGlobalGeneric(context, global_object, vector); | 2122 new(zone()) LLoadGlobalGeneric(context, global_object, vector); |
| 2134 return MarkAsCall(DefineFixed(result, eax), instr); | 2123 return MarkAsCall(DefineFixed(result, eax), instr); |
| 2135 } | 2124 } |
| 2136 | 2125 |
| 2137 | 2126 |
| 2138 LInstruction* LChunkBuilder::DoLoadGlobalViaContext( | |
| 2139 HLoadGlobalViaContext* instr) { | |
| 2140 LOperand* context = UseFixed(instr->context(), esi); | |
| 2141 DCHECK(instr->slot_index() > 0); | |
| 2142 LLoadGlobalViaContext* result = new (zone()) LLoadGlobalViaContext(context); | |
| 2143 return MarkAsCall(DefineFixed(result, eax), instr); | |
| 2144 } | |
| 2145 | |
| 2146 | |
| 2147 LInstruction* LChunkBuilder::DoLoadContextSlot(HLoadContextSlot* instr) { | 2127 LInstruction* LChunkBuilder::DoLoadContextSlot(HLoadContextSlot* instr) { |
| 2148 LOperand* context = UseRegisterAtStart(instr->value()); | 2128 LOperand* context = UseRegisterAtStart(instr->value()); |
| 2149 LInstruction* result = | 2129 LInstruction* result = |
| 2150 DefineAsRegister(new(zone()) LLoadContextSlot(context)); | 2130 DefineAsRegister(new(zone()) LLoadContextSlot(context)); |
| 2151 if (instr->RequiresHoleCheck() && instr->DeoptimizesOnHole()) { | 2131 if (instr->RequiresHoleCheck() && instr->DeoptimizesOnHole()) { |
| 2152 result = AssignEnvironment(result); | 2132 result = AssignEnvironment(result); |
| 2153 } | 2133 } |
| 2154 return result; | 2134 return result; |
| 2155 } | 2135 } |
| 2156 | 2136 |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2475 slot = FixedTemp(VectorStoreICDescriptor::SlotRegister()); | 2455 slot = FixedTemp(VectorStoreICDescriptor::SlotRegister()); |
| 2476 vector = FixedTemp(VectorStoreICDescriptor::VectorRegister()); | 2456 vector = FixedTemp(VectorStoreICDescriptor::VectorRegister()); |
| 2477 } | 2457 } |
| 2478 | 2458 |
| 2479 LStoreNamedGeneric* result = | 2459 LStoreNamedGeneric* result = |
| 2480 new (zone()) LStoreNamedGeneric(context, object, value, slot, vector); | 2460 new (zone()) LStoreNamedGeneric(context, object, value, slot, vector); |
| 2481 return MarkAsCall(result, instr); | 2461 return MarkAsCall(result, instr); |
| 2482 } | 2462 } |
| 2483 | 2463 |
| 2484 | 2464 |
| 2485 LInstruction* LChunkBuilder::DoStoreGlobalViaContext( | |
| 2486 HStoreGlobalViaContext* instr) { | |
| 2487 LOperand* context = UseFixed(instr->context(), esi); | |
| 2488 LOperand* value = UseFixed(instr->value(), | |
| 2489 StoreGlobalViaContextDescriptor::ValueRegister()); | |
| 2490 DCHECK(instr->slot_index() > 0); | |
| 2491 | |
| 2492 LStoreGlobalViaContext* result = | |
| 2493 new (zone()) LStoreGlobalViaContext(context, value); | |
| 2494 return MarkAsCall(result, instr); | |
| 2495 } | |
| 2496 | |
| 2497 | |
| 2498 LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) { | 2465 LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) { |
| 2499 LOperand* context = UseFixed(instr->context(), esi); | 2466 LOperand* context = UseFixed(instr->context(), esi); |
| 2500 LOperand* left = UseFixed(instr->left(), edx); | 2467 LOperand* left = UseFixed(instr->left(), edx); |
| 2501 LOperand* right = UseFixed(instr->right(), eax); | 2468 LOperand* right = UseFixed(instr->right(), eax); |
| 2502 LStringAdd* string_add = new(zone()) LStringAdd(context, left, right); | 2469 LStringAdd* string_add = new(zone()) LStringAdd(context, left, right); |
| 2503 return MarkAsCall(DefineFixed(string_add, eax), instr); | 2470 return MarkAsCall(DefineFixed(string_add, eax), instr); |
| 2504 } | 2471 } |
| 2505 | 2472 |
| 2506 | 2473 |
| 2507 LInstruction* LChunkBuilder::DoStringCharCodeAt(HStringCharCodeAt* instr) { | 2474 LInstruction* LChunkBuilder::DoStringCharCodeAt(HStringCharCodeAt* instr) { |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2758 LAllocateBlockContext* result = | 2725 LAllocateBlockContext* result = |
| 2759 new(zone()) LAllocateBlockContext(context, function); | 2726 new(zone()) LAllocateBlockContext(context, function); |
| 2760 return MarkAsCall(DefineFixed(result, esi), instr); | 2727 return MarkAsCall(DefineFixed(result, esi), instr); |
| 2761 } | 2728 } |
| 2762 | 2729 |
| 2763 | 2730 |
| 2764 } // namespace internal | 2731 } // namespace internal |
| 2765 } // namespace v8 | 2732 } // namespace v8 |
| 2766 | 2733 |
| 2767 #endif // V8_TARGET_ARCH_X87 | 2734 #endif // V8_TARGET_ARCH_X87 |
| OLD | NEW |