Index: src/x64/lithium-x64.h |
diff --git a/src/x64/lithium-x64.h b/src/x64/lithium-x64.h |
index 442e46f26d6bd99365af68b4fc49e64fb551fb15..b2f4697f16173ab240f0629029e5206995b34e84 100644 |
--- a/src/x64/lithium-x64.h |
+++ b/src/x64/lithium-x64.h |
@@ -17,147 +17,148 @@ namespace internal { |
// Forward declarations. |
class LCodeGen; |
-#define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \ |
- V(AccessArgumentsAt) \ |
- V(AddI) \ |
- V(Allocate) \ |
- V(AllocateBlockContext) \ |
- V(ApplyArguments) \ |
- V(ArgumentsElements) \ |
- V(ArgumentsLength) \ |
- V(ArithmeticD) \ |
- V(ArithmeticT) \ |
- V(BitI) \ |
- V(BoundsCheck) \ |
- V(Branch) \ |
- V(CallJSFunction) \ |
- V(CallWithDescriptor) \ |
- V(CallFunction) \ |
- V(CallNew) \ |
- V(CallNewArray) \ |
- V(CallRuntime) \ |
- V(CallStub) \ |
- V(CheckInstanceType) \ |
- V(CheckMaps) \ |
- V(CheckMapValue) \ |
- V(CheckNonSmi) \ |
- V(CheckSmi) \ |
- V(CheckValue) \ |
- V(ClampDToUint8) \ |
- V(ClampIToUint8) \ |
- V(ClampTToUint8) \ |
- V(ClassOfTestAndBranch) \ |
- V(CompareMinusZeroAndBranch) \ |
- V(CompareNumericAndBranch) \ |
- V(CmpObjectEqAndBranch) \ |
- V(CmpHoleAndBranch) \ |
- V(CmpMapAndBranch) \ |
- V(CmpT) \ |
- V(ConstantD) \ |
- V(ConstantE) \ |
- V(ConstantI) \ |
- V(ConstantS) \ |
- V(ConstantT) \ |
- V(ConstructDouble) \ |
- V(Context) \ |
- V(DateField) \ |
- V(DebugBreak) \ |
- V(DeclareGlobals) \ |
- V(Deoptimize) \ |
- V(DivByConstI) \ |
- V(DivByPowerOf2I) \ |
- V(DivI) \ |
- V(DoubleBits) \ |
- V(DoubleToI) \ |
- V(DoubleToSmi) \ |
- V(Drop) \ |
- V(DummyUse) \ |
- V(Dummy) \ |
- V(FlooringDivByConstI) \ |
- V(FlooringDivByPowerOf2I) \ |
- V(FlooringDivI) \ |
- V(ForInCacheArray) \ |
- V(ForInPrepareMap) \ |
- V(FunctionLiteral) \ |
- V(GetCachedArrayIndex) \ |
- V(Goto) \ |
- V(HasCachedArrayIndexAndBranch) \ |
- V(HasInstanceTypeAndBranch) \ |
- V(InnerAllocatedObject) \ |
- V(InstanceOf) \ |
- V(InstanceOfKnownGlobal) \ |
- V(InstructionGap) \ |
- V(Integer32ToDouble) \ |
- V(InvokeFunction) \ |
- V(IsConstructCallAndBranch) \ |
- V(IsObjectAndBranch) \ |
- V(IsStringAndBranch) \ |
- V(IsSmiAndBranch) \ |
- V(IsUndetectableAndBranch) \ |
- V(Label) \ |
- V(LazyBailout) \ |
- V(LoadContextSlot) \ |
- V(LoadRoot) \ |
- V(LoadFieldByIndex) \ |
- V(LoadFunctionPrototype) \ |
- V(LoadGlobalCell) \ |
- V(LoadGlobalGeneric) \ |
- V(LoadKeyed) \ |
- V(LoadKeyedGeneric) \ |
- V(LoadNamedField) \ |
- V(LoadNamedGeneric) \ |
- V(MapEnumLength) \ |
- V(MathAbs) \ |
- V(MathClz32) \ |
- V(MathExp) \ |
- V(MathFloor) \ |
- V(MathLog) \ |
- V(MathMinMax) \ |
- V(MathPowHalf) \ |
- V(MathRound) \ |
- V(MathSqrt) \ |
- V(ModByConstI) \ |
- V(ModByPowerOf2I) \ |
- V(ModI) \ |
- V(MulI) \ |
- V(NumberTagD) \ |
- V(NumberTagI) \ |
- V(NumberTagU) \ |
- V(NumberUntagD) \ |
- V(OsrEntry) \ |
- V(Parameter) \ |
- V(Power) \ |
- V(PushArgument) \ |
- V(RegExpLiteral) \ |
- V(Return) \ |
- V(SeqStringGetChar) \ |
- V(SeqStringSetChar) \ |
- V(ShiftI) \ |
- V(SmiTag) \ |
- V(SmiUntag) \ |
- V(StackCheck) \ |
- V(StoreCodeEntry) \ |
- V(StoreContextSlot) \ |
- V(StoreFrameContext) \ |
- V(StoreGlobalCell) \ |
- V(StoreKeyed) \ |
- V(StoreKeyedGeneric) \ |
- V(StoreNamedField) \ |
- V(StoreNamedGeneric) \ |
- V(StringAdd) \ |
- V(StringCharCodeAt) \ |
- V(StringCharFromCode) \ |
- V(StringCompareAndBranch) \ |
- V(SubI) \ |
- V(TaggedToI) \ |
- V(ThisFunction) \ |
- V(ToFastProperties) \ |
- V(TransitionElementsKind) \ |
- V(TrapAllocationMemento) \ |
- V(Typeof) \ |
- V(TypeofIsAndBranch) \ |
- V(Uint32ToDouble) \ |
- V(UnknownOSRValue) \ |
+#define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \ |
+ V(AccessArgumentsAt) \ |
+ V(AddI) \ |
+ V(Allocate) \ |
+ V(AllocateBlockContext) \ |
+ V(ApplyArguments) \ |
+ V(ArgumentsElements) \ |
+ V(ArgumentsLength) \ |
+ V(ArithmeticD) \ |
+ V(ArithmeticT) \ |
+ V(BitI) \ |
+ V(BoundsCheck) \ |
+ V(Branch) \ |
+ V(CallJSFunction) \ |
+ V(CallWithDescriptor) \ |
+ V(CallFunction) \ |
+ V(CallNew) \ |
+ V(CallNewArray) \ |
+ V(CallRuntime) \ |
+ V(CallStub) \ |
+ V(CheckInstanceType) \ |
+ V(CheckMaps) \ |
+ V(CheckMapValue) \ |
+ V(CheckNonSmi) \ |
+ V(CheckSmi) \ |
+ V(CheckValue) \ |
+ V(ClampDToUint8) \ |
+ V(ClampIToUint8) \ |
+ V(ClampTToUint8) \ |
+ V(ClassOfTestAndBranch) \ |
+ V(CompareMinusZeroAndBranch) \ |
+ V(CompareNumericAndBranch) \ |
+ V(CmpObjectEqAndBranch) \ |
+ V(CmpHoleAndBranch) \ |
+ V(CmpMapAndBranch) \ |
+ V(CmpT) \ |
+ V(ConstantD) \ |
+ V(ConstantE) \ |
+ V(ConstantI) \ |
+ V(ConstantS) \ |
+ V(ConstantT) \ |
+ V(ConstructDouble) \ |
+ V(Context) \ |
+ V(DateField) \ |
+ V(DebugBreak) \ |
+ V(DeclareGlobals) \ |
+ V(Deoptimize) \ |
+ V(DivByConstI) \ |
+ V(DivByPowerOf2I) \ |
+ V(DivI) \ |
+ V(DoubleBits) \ |
+ V(DoubleToI) \ |
+ V(DoubleToSmi) \ |
+ V(Drop) \ |
+ V(DummyUse) \ |
+ V(Dummy) \ |
+ V(FlooringDivByConstI) \ |
+ V(FlooringDivByPowerOf2I) \ |
+ V(FlooringDivI) \ |
+ V(ForInCacheArray) \ |
+ V(ForInPrepareMap) \ |
+ V(FunctionLiteral) \ |
+ V(GetCachedArrayIndex) \ |
+ V(Goto) \ |
+ V(HasCachedArrayIndexAndBranch) \ |
+ V(HasInstanceTypeAndBranch) \ |
+ V(InnerAllocatedObject) \ |
+ V(InstanceOf) \ |
+ V(InstanceOfKnownGlobal) \ |
+ V(InstructionGap) \ |
+ V(Integer32ToDouble) \ |
+ V(InvokeFunction) \ |
+ V(IsConstructCallAndBranch) \ |
+ V(IsObjectAndBranch) \ |
+ V(IsStringAndBranch) \ |
+ V(IsSmiAndBranch) \ |
+ V(IsUndetectableAndBranch) \ |
+ V(Label) \ |
+ V(LazyBailout) \ |
+ V(LoadContextSlot) \ |
+ V(LoadRoot) \ |
+ V(LoadFieldByIndex) \ |
+ V(LoadFunctionPrototype) \ |
+ V(LoadGlobalCell) \ |
+ V(LoadGlobalGeneric) \ |
+ V(LoadKeyed) \ |
+ V(LoadKeyedGeneric) \ |
+ V(LoadNamedField) \ |
+ V(LoadNamedGeneric) \ |
+ V(MapEnumLength) \ |
+ V(MathAbs) \ |
+ V(MathClz32) \ |
+ V(MathExp) \ |
+ V(MathFloor) \ |
+ V(MathFround) \ |
+ V(MathLog) \ |
+ V(MathMinMax) \ |
+ V(MathPowHalf) \ |
+ V(MathRound) \ |
+ V(MathSqrt) \ |
+ V(ModByConstI) \ |
+ V(ModByPowerOf2I) \ |
+ V(ModI) \ |
+ V(MulI) \ |
+ V(NumberTagD) \ |
+ V(NumberTagI) \ |
+ V(NumberTagU) \ |
+ V(NumberUntagD) \ |
+ V(OsrEntry) \ |
+ V(Parameter) \ |
+ V(Power) \ |
+ V(PushArgument) \ |
+ V(RegExpLiteral) \ |
+ V(Return) \ |
+ V(SeqStringGetChar) \ |
+ V(SeqStringSetChar) \ |
+ V(ShiftI) \ |
+ V(SmiTag) \ |
+ V(SmiUntag) \ |
+ V(StackCheck) \ |
+ V(StoreCodeEntry) \ |
+ V(StoreContextSlot) \ |
+ V(StoreFrameContext) \ |
+ V(StoreGlobalCell) \ |
+ V(StoreKeyed) \ |
+ V(StoreKeyedGeneric) \ |
+ V(StoreNamedField) \ |
+ V(StoreNamedGeneric) \ |
+ V(StringAdd) \ |
+ V(StringCharCodeAt) \ |
+ V(StringCharFromCode) \ |
+ V(StringCompareAndBranch) \ |
+ V(SubI) \ |
+ V(TaggedToI) \ |
+ V(ThisFunction) \ |
+ V(ToFastProperties) \ |
+ V(TransitionElementsKind) \ |
+ V(TrapAllocationMemento) \ |
+ V(Typeof) \ |
+ V(TypeofIsAndBranch) \ |
+ V(Uint32ToDouble) \ |
+ V(UnknownOSRValue) \ |
V(WrapReceiver) |
@@ -847,7 +848,7 @@ class LMathFloor V8_FINAL : public LTemplateInstruction<1, 1, 0> { |
class LMathRound V8_FINAL : public LTemplateInstruction<1, 1, 1> { |
public: |
- explicit LMathRound(LOperand* value, LOperand* temp) { |
+ LMathRound(LOperand* value, LOperand* temp) { |
inputs_[0] = value; |
temps_[0] = temp; |
} |
@@ -860,6 +861,16 @@ class LMathRound V8_FINAL : public LTemplateInstruction<1, 1, 1> { |
}; |
+class LMathFround V8_FINAL : public LTemplateInstruction<1, 1, 0> { |
+ public: |
+ explicit LMathFround(LOperand* value) { inputs_[0] = value; } |
+ |
+ LOperand* value() { return inputs_[0]; } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(MathRound, "math-fround") |
+}; |
+ |
+ |
class LMathAbs V8_FINAL : public LTemplateInstruction<1, 2, 0> { |
public: |
explicit LMathAbs(LOperand* context, LOperand* value) { |
@@ -2734,6 +2745,7 @@ class LChunkBuilder V8_FINAL : public LChunkBuilderBase { |
LInstruction* DoMathFloor(HUnaryMathOperation* instr); |
LInstruction* DoMathRound(HUnaryMathOperation* instr); |
+ LInstruction* DoMathFround(HUnaryMathOperation* instr); |
LInstruction* DoMathAbs(HUnaryMathOperation* instr); |
LInstruction* DoMathLog(HUnaryMathOperation* instr); |
LInstruction* DoMathExp(HUnaryMathOperation* instr); |