| Index: src/x64/lithium-x64.h
|
| ===================================================================
|
| --- src/x64/lithium-x64.h (revision 7948)
|
| +++ src/x64/lithium-x64.h (working copy)
|
| @@ -73,6 +73,9 @@
|
| V(CheckNonSmi) \
|
| V(CheckPrototypeMaps) \
|
| V(CheckSmi) \
|
| + V(ClampDToUint8) \
|
| + V(ClampIToUint8) \
|
| + V(ClampTToUint8) \
|
| V(ClassOfTest) \
|
| V(ClassOfTestAndBranch) \
|
| V(CmpID) \
|
| @@ -80,6 +83,8 @@
|
| V(CmpJSObjectEq) \
|
| V(CmpJSObjectEqAndBranch) \
|
| V(CmpMapAndBranch) \
|
| + V(CmpSymbolEq) \
|
| + V(CmpSymbolEqAndBranch) \
|
| V(CmpT) \
|
| V(CmpTAndBranch) \
|
| V(ConstantD) \
|
| @@ -108,18 +113,23 @@
|
| V(InstructionGap) \
|
| V(Integer32ToDouble) \
|
| V(InvokeFunction) \
|
| + V(IsConstructCall) \
|
| + V(IsConstructCallAndBranch) \
|
| V(IsNull) \
|
| V(IsNullAndBranch) \
|
| V(IsObject) \
|
| V(IsObjectAndBranch) \
|
| V(IsSmi) \
|
| V(IsSmiAndBranch) \
|
| + V(IsUndetectable) \
|
| + V(IsUndetectableAndBranch) \
|
| V(JSArrayLength) \
|
| V(Label) \
|
| V(LazyBailout) \
|
| V(LoadContextSlot) \
|
| V(LoadElements) \
|
| V(LoadExternalArrayPointer) \
|
| + V(LoadFunctionPrototype) \
|
| V(LoadGlobalCell) \
|
| V(LoadGlobalGeneric) \
|
| V(LoadKeyedFastElement) \
|
| @@ -128,7 +138,6 @@
|
| V(LoadNamedField) \
|
| V(LoadNamedFieldPolymorphic) \
|
| V(LoadNamedGeneric) \
|
| - V(LoadFunctionPrototype) \
|
| V(ModI) \
|
| V(MulI) \
|
| V(NumberTagD) \
|
| @@ -160,13 +169,11 @@
|
| V(StringLength) \
|
| V(SubI) \
|
| V(TaggedToI) \
|
| + V(Throw) \
|
| V(ToFastProperties) \
|
| - V(Throw) \
|
| V(Typeof) \
|
| V(TypeofIs) \
|
| V(TypeofIsAndBranch) \
|
| - V(IsConstructCall) \
|
| - V(IsConstructCallAndBranch) \
|
| V(UnaryMathOperation) \
|
| V(UnknownOSRValue) \
|
| V(ValueOf)
|
| @@ -664,6 +671,28 @@
|
| };
|
|
|
|
|
| +class LCmpSymbolEq: public LTemplateInstruction<1, 2, 0> {
|
| + public:
|
| + LCmpSymbolEq(LOperand* left, LOperand* right) {
|
| + inputs_[0] = left;
|
| + inputs_[1] = right;
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(CmpSymbolEq, "cmp-symbol-eq")
|
| +};
|
| +
|
| +
|
| +class LCmpSymbolEqAndBranch: public LControlInstruction<2, 0> {
|
| + public:
|
| + LCmpSymbolEqAndBranch(LOperand* left, LOperand* right) {
|
| + inputs_[0] = left;
|
| + inputs_[1] = right;
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(CmpSymbolEqAndBranch, "cmp-symbol-eq-and-branch")
|
| +};
|
| +
|
| +
|
| class LIsNull: public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| explicit LIsNull(LOperand* value) {
|
| @@ -738,6 +767,31 @@
|
| };
|
|
|
|
|
| +class LIsUndetectable: public LTemplateInstruction<1, 1, 0> {
|
| + public:
|
| + explicit LIsUndetectable(LOperand* value) {
|
| + inputs_[0] = value;
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(IsUndetectable, "is-undetectable")
|
| + DECLARE_HYDROGEN_ACCESSOR(IsUndetectable)
|
| +};
|
| +
|
| +
|
| +class LIsUndetectableAndBranch: public LControlInstruction<1, 1> {
|
| + public:
|
| + explicit LIsUndetectableAndBranch(LOperand* value, LOperand* temp) {
|
| + inputs_[0] = value;
|
| + temps_[0] = temp;
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch,
|
| + "is-undetectable-and-branch")
|
| +
|
| + virtual void PrintDataTo(StringStream* stream);
|
| +};
|
| +
|
| +
|
| class LHasInstanceType: public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| explicit LHasInstanceType(LOperand* value) {
|
| @@ -1856,6 +1910,47 @@
|
| };
|
|
|
|
|
| +class LClampDToUint8: public LTemplateInstruction<1, 1, 1> {
|
| + public:
|
| + LClampDToUint8(LOperand* value, LOperand* temp) {
|
| + inputs_[0] = value;
|
| + temps_[0] = temp;
|
| + }
|
| +
|
| + LOperand* unclamped() { return inputs_[0]; }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(ClampDToUint8, "clamp-d-to-uint8")
|
| +};
|
| +
|
| +
|
| +class LClampIToUint8: public LTemplateInstruction<1, 1, 0> {
|
| + public:
|
| + explicit LClampIToUint8(LOperand* value) {
|
| + inputs_[0] = value;
|
| + }
|
| +
|
| + LOperand* unclamped() { return inputs_[0]; }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(ClampIToUint8, "clamp-i-to-uint8")
|
| +};
|
| +
|
| +
|
| +class LClampTToUint8: public LTemplateInstruction<1, 1, 2> {
|
| + public:
|
| + LClampTToUint8(LOperand* value,
|
| + LOperand* temp,
|
| + LOperand* temp2) {
|
| + inputs_[0] = value;
|
| + temps_[0] = temp;
|
| + temps_[1] = temp2;
|
| + }
|
| +
|
| + LOperand* unclamped() { return inputs_[0]; }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(ClampTToUint8, "clamp-t-to-uint8")
|
| +};
|
| +
|
| +
|
| class LCheckNonSmi: public LTemplateInstruction<0, 1, 0> {
|
| public:
|
| explicit LCheckNonSmi(LOperand* value) {
|
|
|