Kill obsolete HLoadExternalArrayPointer instruction.
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/141583011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18893 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
abe807db7f
commit
c12593cf2b
@ -2051,13 +2051,6 @@ LInstruction* LChunkBuilder::DoLoadRoot(HLoadRoot* instr) {
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoLoadExternalArrayPointer(
|
||||
HLoadExternalArrayPointer* instr) {
|
||||
LOperand* input = UseRegisterAtStart(instr->value());
|
||||
return DefineAsRegister(new(zone()) LLoadExternalArrayPointer(input));
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoLoadKeyed(HLoadKeyed* instr) {
|
||||
ASSERT(instr->key()->representation().IsSmiOrInteger32());
|
||||
ElementsKind elements_kind = instr->elements_kind();
|
||||
|
@ -114,7 +114,6 @@ class LCodeGen;
|
||||
V(Label) \
|
||||
V(LazyBailout) \
|
||||
V(LoadContextSlot) \
|
||||
V(LoadExternalArrayPointer) \
|
||||
V(LoadRoot) \
|
||||
V(LoadFieldByIndex) \
|
||||
V(LoadFunctionPrototype) \
|
||||
@ -1564,20 +1563,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) {
|
||||
|
@ -3147,15 +3147,6 @@ void LCodeGen::DoLoadRoot(LLoadRoot* instr) {
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoLoadExternalArrayPointer(
|
||||
LLoadExternalArrayPointer* instr) {
|
||||
Register to_reg = ToRegister(instr->result());
|
||||
Register from_reg = ToRegister(instr->object());
|
||||
__ ldr(to_reg, FieldMemOperand(from_reg,
|
||||
ExternalArray::kExternalPointerOffset));
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoAccessArgumentsAt(LAccessArgumentsAt* instr) {
|
||||
Register arguments = ToRegister(instr->arguments());
|
||||
Register result = ToRegister(instr->result());
|
||||
|
@ -131,7 +131,6 @@ class LChunkBuilder;
|
||||
V(IsUndetectableAndBranch) \
|
||||
V(LeaveInlined) \
|
||||
V(LoadContextSlot) \
|
||||
V(LoadExternalArrayPointer) \
|
||||
V(LoadFieldByIndex) \
|
||||
V(LoadFunctionPrototype) \
|
||||
V(LoadGlobalCell) \
|
||||
@ -2687,38 +2686,6 @@ class HLoadRoot V8_FINAL : public HTemplateInstruction<0> {
|
||||
};
|
||||
|
||||
|
||||
class HLoadExternalArrayPointer V8_FINAL : public HUnaryOperation {
|
||||
public:
|
||||
DECLARE_INSTRUCTION_FACTORY_P1(HLoadExternalArrayPointer, HValue*);
|
||||
|
||||
virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
||||
return Representation::Tagged();
|
||||
}
|
||||
|
||||
virtual HType CalculateInferredType() V8_OVERRIDE {
|
||||
return HType::None();
|
||||
}
|
||||
|
||||
DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer)
|
||||
|
||||
protected:
|
||||
virtual bool DataEquals(HValue* other) V8_OVERRIDE { return true; }
|
||||
|
||||
private:
|
||||
explicit HLoadExternalArrayPointer(HValue* value)
|
||||
: HUnaryOperation(value) {
|
||||
set_representation(Representation::External());
|
||||
// The result of this instruction is idempotent as long as its inputs don't
|
||||
// change. The external array of a specialized array elements object cannot
|
||||
// change once set, so it's no necessary to introduce any additional
|
||||
// dependencies on top of the inputs.
|
||||
SetFlag(kUseGVN);
|
||||
}
|
||||
|
||||
virtual bool IsDeletable() const V8_OVERRIDE { return true; }
|
||||
};
|
||||
|
||||
|
||||
class HCheckMaps V8_FINAL : public HTemplateInstruction<2> {
|
||||
public:
|
||||
static HCheckMaps* New(Zone* zone, HValue* context, HValue* value,
|
||||
|
@ -2121,8 +2121,8 @@ HInstruction* HGraphBuilder::BuildUncheckedMonomorphicElementAccess(
|
||||
IsFixedTypedArrayElementsKind(elements_kind)) {
|
||||
HValue* backing_store;
|
||||
if (IsExternalArrayElementsKind(elements_kind)) {
|
||||
backing_store =
|
||||
Add<HLoadExternalArrayPointer>(elements);
|
||||
backing_store = Add<HLoadNamedField>(
|
||||
elements, HObjectAccess::ForExternalArrayExternalPointer());
|
||||
} else {
|
||||
backing_store = elements;
|
||||
}
|
||||
|
@ -3365,15 +3365,6 @@ void LCodeGen::DoLoadRoot(LLoadRoot* instr) {
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoLoadExternalArrayPointer(
|
||||
LLoadExternalArrayPointer* instr) {
|
||||
Register result = ToRegister(instr->result());
|
||||
Register input = ToRegister(instr->object());
|
||||
__ mov(result, FieldOperand(input,
|
||||
ExternalArray::kExternalPointerOffset));
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoAccessArgumentsAt(LAccessArgumentsAt* instr) {
|
||||
Register arguments = ToRegister(instr->arguments());
|
||||
Register result = ToRegister(instr->result());
|
||||
|
@ -2089,13 +2089,6 @@ LInstruction* LChunkBuilder::DoLoadRoot(HLoadRoot* instr) {
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoLoadExternalArrayPointer(
|
||||
HLoadExternalArrayPointer* instr) {
|
||||
LOperand* input = UseRegisterAtStart(instr->value());
|
||||
return DefineAsRegister(new(zone()) LLoadExternalArrayPointer(input));
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoLoadKeyed(HLoadKeyed* instr) {
|
||||
ASSERT(instr->key()->representation().IsSmiOrInteger32());
|
||||
ElementsKind elements_kind = instr->elements_kind();
|
||||
|
@ -116,7 +116,6 @@ class LCodeGen;
|
||||
V(Label) \
|
||||
V(LazyBailout) \
|
||||
V(LoadContextSlot) \
|
||||
V(LoadExternalArrayPointer) \
|
||||
V(LoadFieldByIndex) \
|
||||
V(LoadFunctionPrototype) \
|
||||
V(LoadGlobalCell) \
|
||||
@ -1549,20 +1548,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) {
|
||||
|
@ -3000,15 +3000,6 @@ void LCodeGen::DoLoadRoot(LLoadRoot* instr) {
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoLoadExternalArrayPointer(
|
||||
LLoadExternalArrayPointer* instr) {
|
||||
Register to_reg = ToRegister(instr->result());
|
||||
Register from_reg = ToRegister(instr->object());
|
||||
__ lw(to_reg, FieldMemOperand(from_reg,
|
||||
ExternalArray::kExternalPointerOffset));
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoAccessArgumentsAt(LAccessArgumentsAt* instr) {
|
||||
Register arguments = ToRegister(instr->arguments());
|
||||
Register result = ToRegister(instr->result());
|
||||
|
@ -1980,13 +1980,6 @@ LInstruction* LChunkBuilder::DoLoadRoot(HLoadRoot* instr) {
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoLoadExternalArrayPointer(
|
||||
HLoadExternalArrayPointer* instr) {
|
||||
LOperand* input = UseRegisterAtStart(instr->value());
|
||||
return DefineAsRegister(new(zone()) LLoadExternalArrayPointer(input));
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoLoadKeyed(HLoadKeyed* instr) {
|
||||
ASSERT(instr->key()->representation().IsSmiOrInteger32());
|
||||
ElementsKind elements_kind = instr->elements_kind();
|
||||
|
@ -114,7 +114,6 @@ class LCodeGen;
|
||||
V(Label) \
|
||||
V(LazyBailout) \
|
||||
V(LoadContextSlot) \
|
||||
V(LoadExternalArrayPointer) \
|
||||
V(LoadRoot) \
|
||||
V(LoadFieldByIndex) \
|
||||
V(LoadFunctionPrototype) \
|
||||
@ -1542,20 +1541,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) {
|
||||
|
@ -2899,16 +2899,6 @@ void LCodeGen::DoLoadRoot(LLoadRoot* instr) {
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoLoadExternalArrayPointer(
|
||||
LLoadExternalArrayPointer* instr) {
|
||||
Register result = ToRegister(instr->result());
|
||||
Register input = ToRegister(instr->object());
|
||||
__ movp(result,
|
||||
FieldOperand(input,
|
||||
ExternalUint8ClampedArray::kExternalPointerOffset));
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoAccessArgumentsAt(LAccessArgumentsAt* instr) {
|
||||
Register arguments = ToRegister(instr->arguments());
|
||||
Register result = ToRegister(instr->result());
|
||||
|
@ -1973,13 +1973,6 @@ LInstruction* LChunkBuilder::DoLoadRoot(HLoadRoot* instr) {
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoLoadExternalArrayPointer(
|
||||
HLoadExternalArrayPointer* instr) {
|
||||
LOperand* input = UseRegisterAtStart(instr->value());
|
||||
return DefineAsRegister(new(zone()) LLoadExternalArrayPointer(input));
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoLoadKeyed(HLoadKeyed* instr) {
|
||||
ASSERT(instr->key()->representation().IsInteger32());
|
||||
ElementsKind elements_kind = instr->elements_kind();
|
||||
|
@ -114,7 +114,6 @@ class LCodeGen;
|
||||
V(Label) \
|
||||
V(LazyBailout) \
|
||||
V(LoadContextSlot) \
|
||||
V(LoadExternalArrayPointer) \
|
||||
V(LoadRoot) \
|
||||
V(LoadFieldByIndex) \
|
||||
V(LoadFunctionPrototype) \
|
||||
@ -1509,20 +1508,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) {
|
||||
|
Loading…
Reference in New Issue
Block a user