| Index: src/arm/lithium-arm.h
|
| diff --git a/src/arm/lithium-arm.h b/src/arm/lithium-arm.h
|
| index 91cbc7156c201735515e55e9d7ea88aace3deb18..fbe52644ad4d1c9a9356a2f04ed8de38f7134acc 100644
|
| --- a/src/arm/lithium-arm.h
|
| +++ b/src/arm/lithium-arm.h
|
| @@ -91,13 +91,10 @@ class LCodeGen;
|
| V(Drop) \
|
| V(Dummy) \
|
| V(DummyUse) \
|
| - V(ElementsKind) \
|
| V(ForInCacheArray) \
|
| V(ForInPrepareMap) \
|
| V(FunctionLiteral) \
|
| V(GetCachedArrayIndex) \
|
| - V(GlobalObject) \
|
| - V(GlobalReceiver) \
|
| V(Goto) \
|
| V(HasCachedArrayIndexAndBranch) \
|
| V(HasInstanceTypeAndBranch) \
|
| @@ -116,7 +113,6 @@ class LCodeGen;
|
| V(Label) \
|
| V(LazyBailout) \
|
| V(LoadContextSlot) \
|
| - V(LoadExternalArrayPointer) \
|
| V(LoadRoot) \
|
| V(LoadFieldByIndex) \
|
| V(LoadFunctionPrototype) \
|
| @@ -128,6 +124,7 @@ class LCodeGen;
|
| V(LoadNamedGeneric) \
|
| V(MapEnumLength) \
|
| V(MathAbs) \
|
| + V(MathClz32) \
|
| V(MathExp) \
|
| V(MathFloor) \
|
| V(MathFloorOfDiv) \
|
| @@ -145,7 +142,6 @@ class LCodeGen;
|
| V(NumberTagU) \
|
| V(NumberUntagD) \
|
| V(OsrEntry) \
|
| - V(OuterContext) \
|
| V(Parameter) \
|
| V(Power) \
|
| V(PushArgument) \
|
| @@ -172,7 +168,6 @@ class LCodeGen;
|
| V(RSubI) \
|
| V(TaggedToI) \
|
| V(ThisFunction) \
|
| - V(Throw) \
|
| V(ToFastProperties) \
|
| V(TransitionElementsKind) \
|
| V(TrapAllocationMemento) \
|
| @@ -181,7 +176,6 @@ class LCodeGen;
|
| V(Uint32ToDouble) \
|
| V(Uint32ToSmi) \
|
| V(UnknownOSRValue) \
|
| - V(ValueOf) \
|
| V(WrapReceiver)
|
|
|
|
|
| @@ -556,6 +550,7 @@ class LWrapReceiver V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(WrapReceiver, "wrap-receiver")
|
| + DECLARE_HYDROGEN_ACCESSOR(WrapReceiver)
|
|
|
| LOperand* receiver() { return inputs_[0]; }
|
| LOperand* function() { return inputs_[1]; }
|
| @@ -654,6 +649,8 @@ class LDivI V8_FINAL : public LTemplateInstruction<1, 2, 1> {
|
| LOperand* right() { return inputs_[1]; }
|
| LOperand* temp() { return temps_[0]; }
|
|
|
| + bool is_flooring() { return hydrogen_value()->IsMathFloorOfDiv(); }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(DivI, "div-i")
|
| DECLARE_HYDROGEN_ACCESSOR(Div)
|
| };
|
| @@ -813,6 +810,18 @@ class LMathLog V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| };
|
|
|
|
|
| +class LMathClz32 V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| + public:
|
| + explicit LMathClz32(LOperand* value) {
|
| + inputs_[0] = value;
|
| + }
|
| +
|
| + LOperand* value() { return inputs_[0]; }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(MathClz32, "math-clz32")
|
| +};
|
| +
|
| +
|
| class LMathExp V8_FINAL : public LTemplateInstruction<1, 1, 3> {
|
| public:
|
| LMathExp(LOperand* value,
|
| @@ -1297,34 +1306,6 @@ class LMapEnumLength V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| };
|
|
|
|
|
| -class LElementsKind V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LElementsKind(LOperand* value) {
|
| - inputs_[0] = value;
|
| - }
|
| -
|
| - LOperand* value() { return inputs_[0]; }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(ElementsKind, "elements-kind")
|
| - DECLARE_HYDROGEN_ACCESSOR(ElementsKind)
|
| -};
|
| -
|
| -
|
| -class LValueOf V8_FINAL : public LTemplateInstruction<1, 1, 1> {
|
| - public:
|
| - LValueOf(LOperand* value, LOperand* temp) {
|
| - inputs_[0] = value;
|
| - temps_[0] = temp;
|
| - }
|
| -
|
| - LOperand* value() { return inputs_[0]; }
|
| - LOperand* temp() { return temps_[0]; }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value-of")
|
| - DECLARE_HYDROGEN_ACCESSOR(ValueOf)
|
| -};
|
| -
|
| -
|
| class LDateField V8_FINAL : public LTemplateInstruction<1, 1, 1> {
|
| public:
|
| LDateField(LOperand* date, LOperand* temp, Smi* index) : index_(index) {
|
| @@ -1380,20 +1361,6 @@ class LSeqStringSetChar V8_FINAL : public LTemplateInstruction<1, 4, 0> {
|
| };
|
|
|
|
|
| -class LThrow V8_FINAL : public LTemplateInstruction<0, 2, 0> {
|
| - public:
|
| - LThrow(LOperand* context, LOperand* value) {
|
| - inputs_[0] = context;
|
| - inputs_[1] = value;
|
| - }
|
| -
|
| - LOperand* context() { return inputs_[0]; }
|
| - LOperand* value() { return inputs_[1]; }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(Throw, "throw")
|
| -};
|
| -
|
| -
|
| class LAddI V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| LAddI(LOperand* left, LOperand* right) {
|
| @@ -1565,20 +1532,6 @@ class LLoadRoot V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| };
|
|
|
|
|
| -class LLoadExternalArrayPointer V8_FINAL
|
| - : public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LLoadExternalArrayPointer(LOperand* object) {
|
| - inputs_[0] = object;
|
| - }
|
| -
|
| - LOperand* object() { return inputs_[0]; }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer,
|
| - "load-external-array-pointer")
|
| -};
|
| -
|
| -
|
| class LLoadKeyed V8_FINAL : public LTemplateInstruction<1, 2, 0> {
|
| public:
|
| LLoadKeyed(LOperand* elements, LOperand* key) {
|
| @@ -1773,18 +1726,6 @@ class LContext V8_FINAL : public LTemplateInstruction<1, 0, 0> {
|
| };
|
|
|
|
|
| -class LOuterContext V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LOuterContext(LOperand* context) {
|
| - inputs_[0] = context;
|
| - }
|
| -
|
| - LOperand* context() { return inputs_[0]; }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(OuterContext, "outer-context")
|
| -};
|
| -
|
| -
|
| class LDeclareGlobals V8_FINAL : public LTemplateInstruction<0, 1, 0> {
|
| public:
|
| explicit LDeclareGlobals(LOperand* context) {
|
| @@ -1798,30 +1739,6 @@ class LDeclareGlobals V8_FINAL : public LTemplateInstruction<0, 1, 0> {
|
| };
|
|
|
|
|
| -class LGlobalObject V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LGlobalObject(LOperand* context) {
|
| - inputs_[0] = context;
|
| - }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(GlobalObject, "global-object")
|
| -
|
| - LOperand* context() { return inputs_[0]; }
|
| -};
|
| -
|
| -
|
| -class LGlobalReceiver V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LGlobalReceiver(LOperand* global_object) {
|
| - inputs_[0] = global_object;
|
| - }
|
| -
|
| - LOperand* global_object() { return inputs_[0]; }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(GlobalReceiver, "global-receiver")
|
| -};
|
| -
|
| -
|
| class LCallJSFunction V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| explicit LCallJSFunction(LOperand* function) {
|
| @@ -2676,7 +2593,6 @@ class LChunkBuilder V8_FINAL : public LChunkBuilderBase {
|
| current_block_(NULL),
|
| next_block_(NULL),
|
| allocator_(allocator),
|
| - position_(RelocInfo::kNoPosition),
|
| instruction_pending_deoptimization_environment_(NULL),
|
| pending_deoptimization_ast_id_(BailoutId::None()) { }
|
|
|
| @@ -2695,7 +2611,6 @@ class LChunkBuilder V8_FINAL : public LChunkBuilderBase {
|
| LInstruction* DoRSub(HSub* instr);
|
|
|
| static bool HasMagicNumberForDivisor(int32_t divisor);
|
| - static HValue* SimplifiedDivisorForMathFloorOfDiv(HValue* val);
|
|
|
| LInstruction* DoMathFloor(HUnaryMathOperation* instr);
|
| LInstruction* DoMathRound(HUnaryMathOperation* instr);
|
| @@ -2704,6 +2619,7 @@ class LChunkBuilder V8_FINAL : public LChunkBuilderBase {
|
| LInstruction* DoMathExp(HUnaryMathOperation* instr);
|
| LInstruction* DoMathSqrt(HUnaryMathOperation* instr);
|
| LInstruction* DoMathPowHalf(HUnaryMathOperation* instr);
|
| + LInstruction* DoMathClz32(HUnaryMathOperation* instr);
|
|
|
| private:
|
| enum Status {
|
| @@ -2814,7 +2730,6 @@ class LChunkBuilder V8_FINAL : public LChunkBuilderBase {
|
| HBasicBlock* current_block_;
|
| HBasicBlock* next_block_;
|
| LAllocator* allocator_;
|
| - int position_;
|
| LInstruction* instruction_pending_deoptimization_environment_;
|
| BailoutId pending_deoptimization_ast_id_;
|
|
|
|
|