| 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 #include "src/arm/lithium-codegen-arm.h" | 9 #include "src/arm/lithium-codegen-arm.h" |
| 10 #include "src/hydrogen-osr.h" | 10 #include "src/hydrogen-osr.h" |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 | 323 |
| 324 void LAccessArgumentsAt::PrintDataTo(StringStream* stream) { | 324 void LAccessArgumentsAt::PrintDataTo(StringStream* stream) { |
| 325 arguments()->PrintTo(stream); | 325 arguments()->PrintTo(stream); |
| 326 stream->Add(" length "); | 326 stream->Add(" length "); |
| 327 length()->PrintTo(stream); | 327 length()->PrintTo(stream); |
| 328 stream->Add(" index "); | 328 stream->Add(" index "); |
| 329 index()->PrintTo(stream); | 329 index()->PrintTo(stream); |
| 330 } | 330 } |
| 331 | 331 |
| 332 | 332 |
| 333 void LLoadGlobalViaContext::PrintDataTo(StringStream* stream) { |
| 334 stream->Add(String::cast(*name())->ToCString().get()); |
| 335 stream->Add(" depth:%d slot:%d", depth(), slot_index()); |
| 336 } |
| 337 |
| 338 |
| 333 void LStoreNamedField::PrintDataTo(StringStream* stream) { | 339 void LStoreNamedField::PrintDataTo(StringStream* stream) { |
| 334 object()->PrintTo(stream); | 340 object()->PrintTo(stream); |
| 335 std::ostringstream os; | 341 std::ostringstream os; |
| 336 os << hydrogen()->access() << " <- "; | 342 os << hydrogen()->access() << " <- "; |
| 337 stream->Add(os.str().c_str()); | 343 stream->Add(os.str().c_str()); |
| 338 value()->PrintTo(stream); | 344 value()->PrintTo(stream); |
| 339 } | 345 } |
| 340 | 346 |
| 341 | 347 |
| 342 void LStoreNamedGeneric::PrintDataTo(StringStream* stream) { | 348 void LStoreNamedGeneric::PrintDataTo(StringStream* stream) { |
| 343 object()->PrintTo(stream); | 349 object()->PrintTo(stream); |
| 344 stream->Add("."); | 350 stream->Add("."); |
| 345 stream->Add(String::cast(*name())->ToCString().get()); | 351 stream->Add(String::cast(*name())->ToCString().get()); |
| 346 stream->Add(" <- "); | 352 stream->Add(" <- "); |
| 347 value()->PrintTo(stream); | 353 value()->PrintTo(stream); |
| 348 } | 354 } |
| 349 | 355 |
| 350 | 356 |
| 357 void LStoreGlobalViaContext::PrintDataTo(StringStream* stream) { |
| 358 stream->Add(String::cast(*name())->ToCString().get()); |
| 359 stream->Add(" <- "); |
| 360 value()->PrintTo(stream); |
| 361 stream->Add(" depth:%d slot:%d", depth(), slot_index()); |
| 362 } |
| 363 |
| 364 |
| 351 void LLoadKeyed::PrintDataTo(StringStream* stream) { | 365 void LLoadKeyed::PrintDataTo(StringStream* stream) { |
| 352 elements()->PrintTo(stream); | 366 elements()->PrintTo(stream); |
| 353 stream->Add("["); | 367 stream->Add("["); |
| 354 key()->PrintTo(stream); | 368 key()->PrintTo(stream); |
| 355 if (hydrogen()->IsDehoisted()) { | 369 if (hydrogen()->IsDehoisted()) { |
| 356 stream->Add(" + %d]", base_offset()); | 370 stream->Add(" + %d]", base_offset()); |
| 357 } else { | 371 } else { |
| 358 stream->Add("]"); | 372 stream->Add("]"); |
| 359 } | 373 } |
| 360 } | 374 } |
| (...skipping 1782 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2143 LOperand* vector = NULL; | 2157 LOperand* vector = NULL; |
| 2144 if (instr->HasVectorAndSlot()) { | 2158 if (instr->HasVectorAndSlot()) { |
| 2145 vector = FixedTemp(LoadWithVectorDescriptor::VectorRegister()); | 2159 vector = FixedTemp(LoadWithVectorDescriptor::VectorRegister()); |
| 2146 } | 2160 } |
| 2147 LLoadGlobalGeneric* result = | 2161 LLoadGlobalGeneric* result = |
| 2148 new(zone()) LLoadGlobalGeneric(context, global_object, vector); | 2162 new(zone()) LLoadGlobalGeneric(context, global_object, vector); |
| 2149 return MarkAsCall(DefineFixed(result, r0), instr); | 2163 return MarkAsCall(DefineFixed(result, r0), instr); |
| 2150 } | 2164 } |
| 2151 | 2165 |
| 2152 | 2166 |
| 2167 LInstruction* LChunkBuilder::DoLoadGlobalViaContext( |
| 2168 HLoadGlobalViaContext* instr) { |
| 2169 LOperand* context = UseFixed(instr->context(), cp); |
| 2170 DCHECK(instr->slot_index() > 0); |
| 2171 LLoadGlobalViaContext* result = new (zone()) LLoadGlobalViaContext(context); |
| 2172 return MarkAsCall(DefineFixed(result, r0), instr); |
| 2173 } |
| 2174 |
| 2175 |
| 2153 LInstruction* LChunkBuilder::DoLoadContextSlot(HLoadContextSlot* instr) { | 2176 LInstruction* LChunkBuilder::DoLoadContextSlot(HLoadContextSlot* instr) { |
| 2154 LOperand* context = UseRegisterAtStart(instr->value()); | 2177 LOperand* context = UseRegisterAtStart(instr->value()); |
| 2155 LInstruction* result = | 2178 LInstruction* result = |
| 2156 DefineAsRegister(new(zone()) LLoadContextSlot(context)); | 2179 DefineAsRegister(new(zone()) LLoadContextSlot(context)); |
| 2157 if (instr->RequiresHoleCheck() && instr->DeoptimizesOnHole()) { | 2180 if (instr->RequiresHoleCheck() && instr->DeoptimizesOnHole()) { |
| 2158 result = AssignEnvironment(result); | 2181 result = AssignEnvironment(result); |
| 2159 } | 2182 } |
| 2160 return result; | 2183 return result; |
| 2161 } | 2184 } |
| 2162 | 2185 |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2430 slot = FixedTemp(VectorStoreICDescriptor::SlotRegister()); | 2453 slot = FixedTemp(VectorStoreICDescriptor::SlotRegister()); |
| 2431 vector = FixedTemp(VectorStoreICDescriptor::VectorRegister()); | 2454 vector = FixedTemp(VectorStoreICDescriptor::VectorRegister()); |
| 2432 } | 2455 } |
| 2433 | 2456 |
| 2434 LStoreNamedGeneric* result = | 2457 LStoreNamedGeneric* result = |
| 2435 new (zone()) LStoreNamedGeneric(context, obj, val, slot, vector); | 2458 new (zone()) LStoreNamedGeneric(context, obj, val, slot, vector); |
| 2436 return MarkAsCall(result, instr); | 2459 return MarkAsCall(result, instr); |
| 2437 } | 2460 } |
| 2438 | 2461 |
| 2439 | 2462 |
| 2463 LInstruction* LChunkBuilder::DoStoreGlobalViaContext( |
| 2464 HStoreGlobalViaContext* instr) { |
| 2465 LOperand* context = UseFixed(instr->context(), cp); |
| 2466 LOperand* value = UseFixed(instr->value(), |
| 2467 StoreGlobalViaContextDescriptor::ValueRegister()); |
| 2468 DCHECK(instr->slot_index() > 0); |
| 2469 |
| 2470 LStoreGlobalViaContext* result = |
| 2471 new (zone()) LStoreGlobalViaContext(context, value); |
| 2472 return MarkAsCall(result, instr); |
| 2473 } |
| 2474 |
| 2475 |
| 2440 LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) { | 2476 LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) { |
| 2441 LOperand* context = UseFixed(instr->context(), cp); | 2477 LOperand* context = UseFixed(instr->context(), cp); |
| 2442 LOperand* left = UseFixed(instr->left(), r1); | 2478 LOperand* left = UseFixed(instr->left(), r1); |
| 2443 LOperand* right = UseFixed(instr->right(), r0); | 2479 LOperand* right = UseFixed(instr->right(), r0); |
| 2444 return MarkAsCall( | 2480 return MarkAsCall( |
| 2445 DefineFixed(new(zone()) LStringAdd(context, left, right), r0), | 2481 DefineFixed(new(zone()) LStringAdd(context, left, right), r0), |
| 2446 instr); | 2482 instr); |
| 2447 } | 2483 } |
| 2448 | 2484 |
| 2449 | 2485 |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2690 HAllocateBlockContext* instr) { | 2726 HAllocateBlockContext* instr) { |
| 2691 LOperand* context = UseFixed(instr->context(), cp); | 2727 LOperand* context = UseFixed(instr->context(), cp); |
| 2692 LOperand* function = UseRegisterAtStart(instr->function()); | 2728 LOperand* function = UseRegisterAtStart(instr->function()); |
| 2693 LAllocateBlockContext* result = | 2729 LAllocateBlockContext* result = |
| 2694 new(zone()) LAllocateBlockContext(context, function); | 2730 new(zone()) LAllocateBlockContext(context, function); |
| 2695 return MarkAsCall(DefineFixed(result, cp), instr); | 2731 return MarkAsCall(DefineFixed(result, cp), instr); |
| 2696 } | 2732 } |
| 2697 | 2733 |
| 2698 } // namespace internal | 2734 } // namespace internal |
| 2699 } // namespace v8 | 2735 } // namespace v8 |
| OLD | NEW |