| Index: src/hydrogen-instructions.h
|
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
|
| index dc087be92b18155a7623f8b96acf50ddd53ac548..1844715dbdf91c7257f964cffd1622b6ab2e9484 100644
|
| --- a/src/hydrogen-instructions.h
|
| +++ b/src/hydrogen-instructions.h
|
| @@ -37,133 +37,134 @@ class LInstruction;
|
| class LChunkBuilder;
|
| class OStream;
|
|
|
| -#define HYDROGEN_ABSTRACT_INSTRUCTION_LIST(V) \
|
| - V(ArithmeticBinaryOperation) \
|
| - V(BinaryOperation) \
|
| - V(BitwiseBinaryOperation) \
|
| - V(ControlInstruction) \
|
| - V(Instruction) \
|
| -
|
| -
|
| -#define HYDROGEN_CONCRETE_INSTRUCTION_LIST(V) \
|
| - V(AbnormalExit) \
|
| - V(AccessArgumentsAt) \
|
| - V(Add) \
|
| - V(AllocateBlockContext) \
|
| - V(Allocate) \
|
| - V(ApplyArguments) \
|
| - V(ArgumentsElements) \
|
| - V(ArgumentsLength) \
|
| - V(ArgumentsObject) \
|
| - V(Bitwise) \
|
| - V(BlockEntry) \
|
| - V(BoundsCheck) \
|
| - V(BoundsCheckBaseIndexInformation) \
|
| - V(Branch) \
|
| - V(CallWithDescriptor) \
|
| - V(CallJSFunction) \
|
| - V(CallFunction) \
|
| - V(CallNew) \
|
| - V(CallNewArray) \
|
| - V(CallRuntime) \
|
| - V(CallStub) \
|
| - V(CapturedObject) \
|
| - V(Change) \
|
| - V(CheckHeapObject) \
|
| - V(CheckInstanceType) \
|
| - V(CheckMaps) \
|
| - V(CheckMapValue) \
|
| - V(CheckSmi) \
|
| - V(CheckValue) \
|
| - V(ClampToUint8) \
|
| - V(ClassOfTestAndBranch) \
|
| - V(CompareNumericAndBranch) \
|
| - V(CompareHoleAndBranch) \
|
| - V(CompareGeneric) \
|
| - V(CompareMinusZeroAndBranch) \
|
| - V(CompareObjectEqAndBranch) \
|
| - V(CompareMap) \
|
| - V(Constant) \
|
| - V(ConstructDouble) \
|
| - V(Context) \
|
| - V(DateField) \
|
| - V(DebugBreak) \
|
| - V(DeclareGlobals) \
|
| - V(Deoptimize) \
|
| - V(Div) \
|
| - V(DoubleBits) \
|
| - V(DummyUse) \
|
| - V(EnterInlined) \
|
| - V(EnvironmentMarker) \
|
| - V(ForceRepresentation) \
|
| - V(ForInCacheArray) \
|
| - V(ForInPrepareMap) \
|
| - V(FunctionLiteral) \
|
| - V(GetCachedArrayIndex) \
|
| - V(Goto) \
|
| - V(HasCachedArrayIndexAndBranch) \
|
| - V(HasInstanceTypeAndBranch) \
|
| - V(InnerAllocatedObject) \
|
| - V(InstanceOf) \
|
| - V(InstanceOfKnownGlobal) \
|
| - V(InvokeFunction) \
|
| - V(IsConstructCallAndBranch) \
|
| - V(IsObjectAndBranch) \
|
| - V(IsStringAndBranch) \
|
| - V(IsSmiAndBranch) \
|
| - V(IsUndetectableAndBranch) \
|
| - V(LeaveInlined) \
|
| - V(LoadContextSlot) \
|
| - V(LoadFieldByIndex) \
|
| - V(LoadFunctionPrototype) \
|
| - V(LoadGlobalCell) \
|
| - V(LoadGlobalGeneric) \
|
| - V(LoadKeyed) \
|
| - V(LoadKeyedGeneric) \
|
| - V(LoadNamedField) \
|
| - V(LoadNamedGeneric) \
|
| - V(LoadRoot) \
|
| - V(MapEnumLength) \
|
| - V(MathFloorOfDiv) \
|
| - V(MathMinMax) \
|
| - V(Mod) \
|
| - V(Mul) \
|
| - V(OsrEntry) \
|
| - V(Parameter) \
|
| - V(Power) \
|
| - V(PushArguments) \
|
| - V(RegExpLiteral) \
|
| - V(Return) \
|
| - V(Ror) \
|
| - V(Sar) \
|
| - V(SeqStringGetChar) \
|
| - V(SeqStringSetChar) \
|
| - V(Shl) \
|
| - V(Shr) \
|
| - V(Simulate) \
|
| - 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(Sub) \
|
| - V(ThisFunction) \
|
| - V(ToFastProperties) \
|
| - V(TransitionElementsKind) \
|
| - V(TrapAllocationMemento) \
|
| - V(Typeof) \
|
| - V(TypeofIsAndBranch) \
|
| - V(UnaryMathOperation) \
|
| - V(UnknownOSRValue) \
|
| - V(UseConst) \
|
| +#define HYDROGEN_ABSTRACT_INSTRUCTION_LIST(V) \
|
| + V(ArithmeticBinaryOperation) \
|
| + V(BinaryOperation) \
|
| + V(BitwiseBinaryOperation) \
|
| + V(ControlInstruction) \
|
| + V(Instruction)
|
| +
|
| +
|
| +#define HYDROGEN_CONCRETE_INSTRUCTION_LIST(V) \
|
| + V(AbnormalExit) \
|
| + V(AccessArgumentsAt) \
|
| + V(Add) \
|
| + V(AllocateBlockContext) \
|
| + V(Allocate) \
|
| + V(ApplyArguments) \
|
| + V(ArgumentsElements) \
|
| + V(ArgumentsLength) \
|
| + V(ArgumentsObject) \
|
| + V(Bitwise) \
|
| + V(BlockEntry) \
|
| + V(BoundsCheck) \
|
| + V(BoundsCheckBaseIndexInformation) \
|
| + V(Branch) \
|
| + V(CallWithDescriptor) \
|
| + V(CallJSFunction) \
|
| + V(CallFunction) \
|
| + V(CallNew) \
|
| + V(CallNewArray) \
|
| + V(CallRuntime) \
|
| + V(CallStub) \
|
| + V(CapturedObject) \
|
| + V(Change) \
|
| + V(CheckHeapObject) \
|
| + V(CheckInstanceType) \
|
| + V(CheckMaps) \
|
| + V(CheckMapValue) \
|
| + V(CheckSmi) \
|
| + V(CheckValue) \
|
| + V(ClampToUint8) \
|
| + V(ClassOfTestAndBranch) \
|
| + V(CompareNumericAndBranch) \
|
| + V(CompareHoleAndBranch) \
|
| + V(CompareGeneric) \
|
| + V(CompareMinusZeroAndBranch) \
|
| + V(CompareObjectEqAndBranch) \
|
| + V(CompareMap) \
|
| + V(Constant) \
|
| + V(ConstructDouble) \
|
| + V(Context) \
|
| + V(DateField) \
|
| + V(DebugBreak) \
|
| + V(DeclareGlobals) \
|
| + V(Deoptimize) \
|
| + V(Div) \
|
| + V(DoubleBits) \
|
| + V(DummyUse) \
|
| + V(EnterInlined) \
|
| + V(EnvironmentMarker) \
|
| + V(ForceRepresentation) \
|
| + V(ForInCacheArray) \
|
| + V(ForInPrepareMap) \
|
| + V(FunctionLiteral) \
|
| + V(GetCachedArrayIndex) \
|
| + V(Goto) \
|
| + V(HasCachedArrayIndexAndBranch) \
|
| + V(HasInstanceTypeAndBranch) \
|
| + V(InnerAllocatedObject) \
|
| + V(InstanceOf) \
|
| + V(InstanceOfKnownGlobal) \
|
| + V(InvokeFunction) \
|
| + V(IsConstructCallAndBranch) \
|
| + V(IsObjectAndBranch) \
|
| + V(IsStringAndBranch) \
|
| + V(IsSmiAndBranch) \
|
| + V(IsUndetectableAndBranch) \
|
| + V(LeaveInlined) \
|
| + V(LoadContextSlot) \
|
| + V(LoadFieldByIndex) \
|
| + V(LoadFunctionPrototype) \
|
| + V(LoadGlobalCell) \
|
| + V(LoadGlobalGeneric) \
|
| + V(LoadKeyed) \
|
| + V(LoadKeyedGeneric) \
|
| + V(LoadNamedField) \
|
| + V(LoadNamedGeneric) \
|
| + V(LoadRoot) \
|
| + V(MapEnumLength) \
|
| + V(MathFloorOfDiv) \
|
| + V(MathMinMax) \
|
| + V(Mod) \
|
| + V(Mul) \
|
| + V(OsrEntry) \
|
| + V(Parameter) \
|
| + V(Power) \
|
| + V(PushArguments) \
|
| + V(RegExpLiteral) \
|
| + V(Return) \
|
| + V(Ror) \
|
| + V(Sar) \
|
| + V(SeqStringGetChar) \
|
| + V(SeqStringSetChar) \
|
| + V(Shl) \
|
| + V(Shr) \
|
| + V(Simulate) \
|
| + 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(Sub) \
|
| + V(TailCallThroughMegamorphicCache) \
|
| + V(ThisFunction) \
|
| + V(ToFastProperties) \
|
| + V(TransitionElementsKind) \
|
| + V(TrapAllocationMemento) \
|
| + V(Typeof) \
|
| + V(TypeofIsAndBranch) \
|
| + V(UnaryMathOperation) \
|
| + V(UnknownOSRValue) \
|
| + V(UseConst) \
|
| V(WrapReceiver)
|
|
|
| #define GVN_TRACKED_FLAG_LIST(V) \
|
| @@ -2324,9 +2325,8 @@ class HCallWithDescriptor FINAL : public HInstruction {
|
| CallInterfaceDescriptor descriptor,
|
| const Vector<HValue*>& operands) {
|
| DCHECK(operands.length() == descriptor.GetEnvironmentLength());
|
| - HCallWithDescriptor* res =
|
| - new(zone) HCallWithDescriptor(target, argument_count,
|
| - descriptor, operands, zone);
|
| + HCallWithDescriptor* res = new (zone)
|
| + HCallWithDescriptor(target, argument_count, descriptor, operands, zone);
|
| return res;
|
| }
|
|
|
| @@ -5352,6 +5352,37 @@ class HCallStub FINAL : public HUnaryCall {
|
| };
|
|
|
|
|
| +class HTailCallThroughMegamorphicCache FINAL : public HTemplateInstruction<3> {
|
| + public:
|
| + DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HTailCallThroughMegamorphicCache,
|
| + HValue*, HValue*, Code::Flags);
|
| +
|
| + virtual Representation RequiredInputRepresentation(int index) OVERRIDE {
|
| + return Representation::Tagged();
|
| + }
|
| +
|
| + HValue* context() const { return OperandAt(0); }
|
| + HValue* receiver() const { return OperandAt(1); }
|
| + HValue* name() const { return OperandAt(2); }
|
| + Code::Flags flags() const { return flags_; }
|
| +
|
| + virtual OStream& PrintDataTo(OStream& os) const OVERRIDE; // NOLINT
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(TailCallThroughMegamorphicCache)
|
| +
|
| + private:
|
| + HTailCallThroughMegamorphicCache(HValue* context, HValue* receiver,
|
| + HValue* name, Code::Flags flags)
|
| + : flags_(flags) {
|
| + SetOperandAt(0, context);
|
| + SetOperandAt(1, receiver);
|
| + SetOperandAt(2, name);
|
| + }
|
| +
|
| + Code::Flags flags_;
|
| +};
|
| +
|
| +
|
| class HUnknownOSRValue FINAL : public HTemplateInstruction<0> {
|
| public:
|
| DECLARE_INSTRUCTION_FACTORY_P2(HUnknownOSRValue, HEnvironment*, int);
|
|
|