| OLD | NEW | 
|---|
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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/arm64/lithium-arm64.h" | 5 #include "src/crankshaft/arm64/lithium-arm64.h" | 
| 6 | 6 | 
| 7 #include <sstream> | 7 #include <sstream> | 
| 8 | 8 | 
| 9 #include "src/crankshaft/arm64/lithium-codegen-arm64.h" | 9 #include "src/crankshaft/arm64/lithium-codegen-arm64.h" | 
| 10 #include "src/crankshaft/hydrogen-osr.h" | 10 #include "src/crankshaft/hydrogen-osr.h" | 
| (...skipping 1696 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1707       } | 1707       } | 
| 1708       return result; | 1708       return result; | 
| 1709     } | 1709     } | 
| 1710   } else { | 1710   } else { | 
| 1711     DCHECK((instr->representation().IsInteger32() && | 1711     DCHECK((instr->representation().IsInteger32() && | 
| 1712             !IsDoubleOrFloatElementsKind(instr->elements_kind())) || | 1712             !IsDoubleOrFloatElementsKind(instr->elements_kind())) || | 
| 1713            (instr->representation().IsDouble() && | 1713            (instr->representation().IsDouble() && | 
| 1714             IsDoubleOrFloatElementsKind(instr->elements_kind()))); | 1714             IsDoubleOrFloatElementsKind(instr->elements_kind()))); | 
| 1715 | 1715 | 
| 1716     LOperand* temp = instr->key()->IsConstant() ? NULL : TempRegister(); | 1716     LOperand* temp = instr->key()->IsConstant() ? NULL : TempRegister(); | 
| 1717     LInstruction* result = DefineAsRegister( | 1717     LOperand* backing_store_owner = UseAny(instr->backing_store_owner()); | 
| 1718         new(zone()) LLoadKeyedExternal(elements, key, temp)); | 1718     LInstruction* result = DefineAsRegister(new (zone()) LLoadKeyedExternal( | 
|  | 1719         elements, key, backing_store_owner, temp)); | 
| 1719     if (elements_kind == UINT32_ELEMENTS && | 1720     if (elements_kind == UINT32_ELEMENTS && | 
| 1720         !instr->CheckFlag(HInstruction::kUint32)) { | 1721         !instr->CheckFlag(HInstruction::kUint32)) { | 
| 1721       result = AssignEnvironment(result); | 1722       result = AssignEnvironment(result); | 
| 1722     } | 1723     } | 
| 1723     return result; | 1724     return result; | 
| 1724   } | 1725   } | 
| 1725 } | 1726 } | 
| 1726 | 1727 | 
| 1727 | 1728 | 
| 1728 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) { | 1729 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) { | 
| (...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2334     val = UseRegister(instr->value()); | 2335     val = UseRegister(instr->value()); | 
| 2335     temp = instr->key()->IsConstant() ? NULL : TempRegister(); | 2336     temp = instr->key()->IsConstant() ? NULL : TempRegister(); | 
| 2336   } | 2337   } | 
| 2337 | 2338 | 
| 2338   if (instr->is_fixed_typed_array()) { | 2339   if (instr->is_fixed_typed_array()) { | 
| 2339     DCHECK((instr->value()->representation().IsInteger32() && | 2340     DCHECK((instr->value()->representation().IsInteger32() && | 
| 2340             !IsDoubleOrFloatElementsKind(instr->elements_kind())) || | 2341             !IsDoubleOrFloatElementsKind(instr->elements_kind())) || | 
| 2341            (instr->value()->representation().IsDouble() && | 2342            (instr->value()->representation().IsDouble() && | 
| 2342             IsDoubleOrFloatElementsKind(instr->elements_kind()))); | 2343             IsDoubleOrFloatElementsKind(instr->elements_kind()))); | 
| 2343     DCHECK(instr->elements()->representation().IsExternal()); | 2344     DCHECK(instr->elements()->representation().IsExternal()); | 
| 2344     return new(zone()) LStoreKeyedExternal(elements, key, val, temp); | 2345     LOperand* backing_store_owner = UseAny(instr->backing_store_owner()); | 
|  | 2346     return new (zone()) | 
|  | 2347         LStoreKeyedExternal(elements, key, val, backing_store_owner, temp); | 
| 2345 | 2348 | 
| 2346   } else if (instr->value()->representation().IsDouble()) { | 2349   } else if (instr->value()->representation().IsDouble()) { | 
| 2347     DCHECK(instr->elements()->representation().IsTagged()); | 2350     DCHECK(instr->elements()->representation().IsTagged()); | 
| 2348     return new(zone()) LStoreKeyedFixedDouble(elements, key, val, temp); | 2351     return new(zone()) LStoreKeyedFixedDouble(elements, key, val, temp); | 
| 2349 | 2352 | 
| 2350   } else { | 2353   } else { | 
| 2351     DCHECK(instr->elements()->representation().IsTagged()); | 2354     DCHECK(instr->elements()->representation().IsTagged()); | 
| 2352     DCHECK(instr->value()->representation().IsSmiOrTagged() || | 2355     DCHECK(instr->value()->representation().IsSmiOrTagged() || | 
| 2353            instr->value()->representation().IsInteger32()); | 2356            instr->value()->representation().IsInteger32()); | 
| 2354     return new(zone()) LStoreKeyedFixed(elements, key, val, temp); | 2357     return new(zone()) LStoreKeyedFixed(elements, key, val, temp); | 
| (...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2754   LOperand* context = UseFixed(instr->context(), cp); | 2757   LOperand* context = UseFixed(instr->context(), cp); | 
| 2755   LOperand* function = UseRegisterAtStart(instr->function()); | 2758   LOperand* function = UseRegisterAtStart(instr->function()); | 
| 2756   LAllocateBlockContext* result = | 2759   LAllocateBlockContext* result = | 
| 2757       new(zone()) LAllocateBlockContext(context, function); | 2760       new(zone()) LAllocateBlockContext(context, function); | 
| 2758   return MarkAsCall(DefineFixed(result, cp), instr); | 2761   return MarkAsCall(DefineFixed(result, cp), instr); | 
| 2759 } | 2762 } | 
| 2760 | 2763 | 
| 2761 | 2764 | 
| 2762 }  // namespace internal | 2765 }  // namespace internal | 
| 2763 }  // namespace v8 | 2766 }  // namespace v8 | 
| OLD | NEW | 
|---|