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 <sstream> | 5 #include <sstream> |
6 | 6 |
7 #include "src/v8.h" | 7 #include "src/v8.h" |
8 | 8 |
9 #include "src/arm64/lithium-codegen-arm64.h" | 9 #include "src/arm64/lithium-codegen-arm64.h" |
10 #include "src/hydrogen-osr.h" | 10 #include "src/hydrogen-osr.h" |
(...skipping 1706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1717 new(zone()) LLoadKeyedFixedDouble(elements, key, temp); | 1717 new(zone()) LLoadKeyedFixedDouble(elements, key, temp); |
1718 return instr->RequiresHoleCheck() | 1718 return instr->RequiresHoleCheck() |
1719 ? AssignEnvironment(DefineAsRegister(result)) | 1719 ? AssignEnvironment(DefineAsRegister(result)) |
1720 : DefineAsRegister(result); | 1720 : DefineAsRegister(result); |
1721 } else { | 1721 } else { |
1722 DCHECK(instr->representation().IsSmiOrTagged() || | 1722 DCHECK(instr->representation().IsSmiOrTagged() || |
1723 instr->representation().IsInteger32()); | 1723 instr->representation().IsInteger32()); |
1724 LOperand* temp = instr->key()->IsConstant() ? NULL : TempRegister(); | 1724 LOperand* temp = instr->key()->IsConstant() ? NULL : TempRegister(); |
1725 LLoadKeyedFixed* result = | 1725 LLoadKeyedFixed* result = |
1726 new(zone()) LLoadKeyedFixed(elements, key, temp); | 1726 new(zone()) LLoadKeyedFixed(elements, key, temp); |
1727 return instr->RequiresHoleCheck() | 1727 return (instr->RequiresHoleCheck() || |
Jakob Kummerow
2015/04/23 13:40:00
Suggestion: I'd model this after the case below (l
mvstanton
2015/04/27 07:57:12
Done, and I made the double case above follow the
| |
1728 ? AssignEnvironment(DefineAsRegister(result)) | 1728 (instr->hole_mode() == CONVERT_HOLE_TO_UNDEFINED && |
1729 : DefineAsRegister(result); | 1729 info()->IsStub())) |
1730 ? AssignEnvironment(DefineAsRegister(result)) | |
1731 : DefineAsRegister(result); | |
1730 } | 1732 } |
1731 } else { | 1733 } else { |
1732 DCHECK((instr->representation().IsInteger32() && | 1734 DCHECK((instr->representation().IsInteger32() && |
1733 !IsDoubleOrFloatElementsKind(instr->elements_kind())) || | 1735 !IsDoubleOrFloatElementsKind(instr->elements_kind())) || |
1734 (instr->representation().IsDouble() && | 1736 (instr->representation().IsDouble() && |
1735 IsDoubleOrFloatElementsKind(instr->elements_kind()))); | 1737 IsDoubleOrFloatElementsKind(instr->elements_kind()))); |
1736 | 1738 |
1737 LOperand* temp = instr->key()->IsConstant() ? NULL : TempRegister(); | 1739 LOperand* temp = instr->key()->IsConstant() ? NULL : TempRegister(); |
1738 LInstruction* result = DefineAsRegister( | 1740 LInstruction* result = DefineAsRegister( |
1739 new(zone()) LLoadKeyedExternal(elements, key, temp)); | 1741 new(zone()) LLoadKeyedExternal(elements, key, temp)); |
(...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2749 HAllocateBlockContext* instr) { | 2751 HAllocateBlockContext* instr) { |
2750 LOperand* context = UseFixed(instr->context(), cp); | 2752 LOperand* context = UseFixed(instr->context(), cp); |
2751 LOperand* function = UseRegisterAtStart(instr->function()); | 2753 LOperand* function = UseRegisterAtStart(instr->function()); |
2752 LAllocateBlockContext* result = | 2754 LAllocateBlockContext* result = |
2753 new(zone()) LAllocateBlockContext(context, function); | 2755 new(zone()) LAllocateBlockContext(context, function); |
2754 return MarkAsCall(DefineFixed(result, cp), instr); | 2756 return MarkAsCall(DefineFixed(result, cp), instr); |
2755 } | 2757 } |
2756 | 2758 |
2757 | 2759 |
2758 } } // namespace v8::internal | 2760 } } // namespace v8::internal |
OLD | NEW |