[crankshaft] Remove the useless HCallStub instruction.
Everything that HCallStub does can easily be done using the more general HCallWithDescriptor, so there's no need to have this dedicated instruction around. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1705633004 Cr-Commit-Position: refs/heads/master@{#34072}
This commit is contained in:
parent
017d128b6e
commit
76c054b1df
@ -2461,12 +2461,6 @@ LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) {
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoCallStub(HCallStub* instr) {
|
||||
LOperand* context = UseFixed(instr->context(), cp);
|
||||
return MarkAsCall(DefineFixed(new(zone()) LCallStub(context), r0), instr);
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) {
|
||||
// There are no real uses of the arguments object.
|
||||
// arguments.length and element access are supported directly on
|
||||
|
@ -35,7 +35,6 @@ class LCodeGen;
|
||||
V(CallFunction) \
|
||||
V(CallNewArray) \
|
||||
V(CallRuntime) \
|
||||
V(CallStub) \
|
||||
V(CheckArrayBufferNotNeutered) \
|
||||
V(CheckInstanceType) \
|
||||
V(CheckNonSmi) \
|
||||
@ -458,19 +457,6 @@ class LParameter final : public LTemplateInstruction<1, 0, 0> {
|
||||
};
|
||||
|
||||
|
||||
class LCallStub final : public LTemplateInstruction<1, 1, 0> {
|
||||
public:
|
||||
explicit LCallStub(LOperand* context) {
|
||||
inputs_[0] = context;
|
||||
}
|
||||
|
||||
LOperand* context() { return inputs_[0]; }
|
||||
|
||||
DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
|
||||
DECLARE_HYDROGEN_ACCESSOR(CallStub)
|
||||
};
|
||||
|
||||
|
||||
class LUnknownOSRValue final : public LTemplateInstruction<1, 0, 0> {
|
||||
public:
|
||||
bool HasInterestingComment(LCodeGen* gen) const override { return false; }
|
||||
|
@ -972,26 +972,6 @@ void LCodeGen::DoParameter(LParameter* instr) {
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoCallStub(LCallStub* instr) {
|
||||
DCHECK(ToRegister(instr->context()).is(cp));
|
||||
DCHECK(ToRegister(instr->result()).is(r0));
|
||||
switch (instr->hydrogen()->major_key()) {
|
||||
case CodeStub::RegExpExec: {
|
||||
RegExpExecStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
case CodeStub::SubString: {
|
||||
SubStringStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) {
|
||||
GenerateOsrPrologue();
|
||||
}
|
||||
|
@ -1084,12 +1084,6 @@ LInstruction* LChunkBuilder::DoCallRuntime(HCallRuntime* instr) {
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoCallStub(HCallStub* instr) {
|
||||
LOperand* context = UseFixed(instr->context(), cp);
|
||||
return MarkAsCall(DefineFixed(new(zone()) LCallStub(context), x0), instr);
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoCapturedObject(HCapturedObject* instr) {
|
||||
instr->ReplayEnvironment(current_block_->last_environment());
|
||||
|
||||
|
@ -37,7 +37,6 @@ class LCodeGen;
|
||||
V(CallJSFunction) \
|
||||
V(CallNewArray) \
|
||||
V(CallRuntime) \
|
||||
V(CallStub) \
|
||||
V(CallWithDescriptor) \
|
||||
V(CheckArrayBufferNotNeutered) \
|
||||
V(CheckInstanceType) \
|
||||
@ -883,19 +882,6 @@ class LCallRuntime final : public LTemplateInstruction<1, 1, 0> {
|
||||
};
|
||||
|
||||
|
||||
class LCallStub final : public LTemplateInstruction<1, 1, 0> {
|
||||
public:
|
||||
explicit LCallStub(LOperand* context) {
|
||||
inputs_[0] = context;
|
||||
}
|
||||
|
||||
LOperand* context() { return inputs_[0]; }
|
||||
|
||||
DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
|
||||
DECLARE_HYDROGEN_ACCESSOR(CallStub)
|
||||
};
|
||||
|
||||
|
||||
class LCheckArrayBufferNotNeutered final
|
||||
: public LTemplateInstruction<0, 1, 0> {
|
||||
public:
|
||||
|
@ -1991,27 +1991,6 @@ void LCodeGen::DoCallRuntime(LCallRuntime* instr) {
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoCallStub(LCallStub* instr) {
|
||||
DCHECK(ToRegister(instr->context()).is(cp));
|
||||
DCHECK(ToRegister(instr->result()).is(x0));
|
||||
switch (instr->hydrogen()->major_key()) {
|
||||
case CodeStub::RegExpExec: {
|
||||
RegExpExecStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
case CodeStub::SubString: {
|
||||
SubStringStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
RecordPushedArgumentsDelta(instr->hydrogen()->argument_delta());
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) {
|
||||
GenerateOsrPrologue();
|
||||
}
|
||||
|
@ -776,7 +776,6 @@ bool HInstruction::CanDeoptimize() {
|
||||
case HValue::kBoundsCheckBaseIndexInformation:
|
||||
case HValue::kCallFunction:
|
||||
case HValue::kCallNewArray:
|
||||
case HValue::kCallStub:
|
||||
case HValue::kCapturedObject:
|
||||
case HValue::kClassOfTestAndBranch:
|
||||
case HValue::kCompareGeneric:
|
||||
@ -1730,12 +1729,6 @@ std::ostream& HCheckInstanceType::PrintDataTo(
|
||||
}
|
||||
|
||||
|
||||
std::ostream& HCallStub::PrintDataTo(std::ostream& os) const { // NOLINT
|
||||
os << CodeStub::MajorName(major_key_) << " ";
|
||||
return HUnaryCall::PrintDataTo(os);
|
||||
}
|
||||
|
||||
|
||||
std::ostream& HUnknownOSRValue::PrintDataTo(std::ostream& os) const { // NOLINT
|
||||
const char* type = "expression";
|
||||
if (environment_->is_local_index(index_)) type = "local";
|
||||
|
@ -64,7 +64,6 @@ class LChunkBuilder;
|
||||
V(CallFunction) \
|
||||
V(CallNewArray) \
|
||||
V(CallRuntime) \
|
||||
V(CallStub) \
|
||||
V(CapturedObject) \
|
||||
V(Change) \
|
||||
V(CheckArrayBufferNotNeutered) \
|
||||
@ -5235,27 +5234,6 @@ class HParameter final : public HTemplateInstruction<0> {
|
||||
};
|
||||
|
||||
|
||||
class HCallStub final : public HUnaryCall {
|
||||
public:
|
||||
DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HCallStub, CodeStub::Major, int);
|
||||
CodeStub::Major major_key() { return major_key_; }
|
||||
|
||||
HValue* context() { return value(); }
|
||||
|
||||
std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT
|
||||
|
||||
DECLARE_CONCRETE_INSTRUCTION(CallStub)
|
||||
|
||||
private:
|
||||
HCallStub(HValue* context, CodeStub::Major major_key, int argument_count)
|
||||
: HUnaryCall(context, argument_count),
|
||||
major_key_(major_key) {
|
||||
}
|
||||
|
||||
CodeStub::Major major_key_;
|
||||
};
|
||||
|
||||
|
||||
class HUnknownOSRValue final : public HTemplateInstruction<0> {
|
||||
public:
|
||||
DECLARE_INSTRUCTION_FACTORY_P2(HUnknownOSRValue, HEnvironment*, int);
|
||||
|
@ -12542,7 +12542,13 @@ void HOptimizedGraphBuilder::GenerateSubString(CallRuntime* call) {
|
||||
DCHECK_EQ(3, call->arguments()->length());
|
||||
CHECK_ALIVE(VisitExpressions(call->arguments()));
|
||||
PushArgumentsFromEnvironment(call->arguments()->length());
|
||||
HCallStub* result = New<HCallStub>(CodeStub::SubString, 3);
|
||||
Callable callable = CodeFactory::SubString(isolate());
|
||||
HValue* stub = Add<HConstant>(callable.code());
|
||||
HValue* values[] = {context()};
|
||||
HInstruction* result = New<HCallWithDescriptor>(
|
||||
stub, call->arguments()->length(), callable.descriptor(),
|
||||
Vector<HValue*>(values, arraysize(values)));
|
||||
result->set_type(HType::String());
|
||||
return ast_context()->ReturnInstruction(result, call->id());
|
||||
}
|
||||
|
||||
@ -12552,7 +12558,12 @@ void HOptimizedGraphBuilder::GenerateRegExpExec(CallRuntime* call) {
|
||||
DCHECK_EQ(4, call->arguments()->length());
|
||||
CHECK_ALIVE(VisitExpressions(call->arguments()));
|
||||
PushArgumentsFromEnvironment(call->arguments()->length());
|
||||
HCallStub* result = New<HCallStub>(CodeStub::RegExpExec, 4);
|
||||
Callable callable = CodeFactory::RegExpExec(isolate());
|
||||
HValue* stub = Add<HConstant>(callable.code());
|
||||
HValue* values[] = {context()};
|
||||
HInstruction* result = New<HCallWithDescriptor>(
|
||||
stub, call->arguments()->length(), callable.descriptor(),
|
||||
Vector<HValue*>(values, arraysize(values)));
|
||||
return ast_context()->ReturnInstruction(result, call->id());
|
||||
}
|
||||
|
||||
|
@ -976,26 +976,6 @@ void LCodeGen::DoParameter(LParameter* instr) {
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoCallStub(LCallStub* instr) {
|
||||
DCHECK(ToRegister(instr->context()).is(esi));
|
||||
DCHECK(ToRegister(instr->result()).is(eax));
|
||||
switch (instr->hydrogen()->major_key()) {
|
||||
case CodeStub::RegExpExec: {
|
||||
RegExpExecStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
case CodeStub::SubString: {
|
||||
SubStringStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) {
|
||||
GenerateOsrPrologue();
|
||||
}
|
||||
|
@ -2517,13 +2517,6 @@ LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) {
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoCallStub(HCallStub* instr) {
|
||||
LOperand* context = UseFixed(instr->context(), esi);
|
||||
LCallStub* result = new(zone()) LCallStub(context);
|
||||
return MarkAsCall(DefineFixed(result, eax), instr);
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) {
|
||||
// There are no real uses of the arguments object.
|
||||
// arguments.length and element access are supported directly on
|
||||
|
@ -39,7 +39,6 @@ class LCodeGen;
|
||||
V(CallFunction) \
|
||||
V(CallNewArray) \
|
||||
V(CallRuntime) \
|
||||
V(CallStub) \
|
||||
V(CheckArrayBufferNotNeutered) \
|
||||
V(CheckInstanceType) \
|
||||
V(CheckMaps) \
|
||||
@ -453,19 +452,6 @@ class LParameter final : public LTemplateInstruction<1, 0, 0> {
|
||||
};
|
||||
|
||||
|
||||
class LCallStub final : public LTemplateInstruction<1, 1, 0> {
|
||||
public:
|
||||
explicit LCallStub(LOperand* context) {
|
||||
inputs_[0] = context;
|
||||
}
|
||||
|
||||
LOperand* context() { return inputs_[0]; }
|
||||
|
||||
DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
|
||||
DECLARE_HYDROGEN_ACCESSOR(CallStub)
|
||||
};
|
||||
|
||||
|
||||
class LUnknownOSRValue final : public LTemplateInstruction<1, 0, 0> {
|
||||
public:
|
||||
bool HasInterestingComment(LCodeGen* gen) const override { return false; }
|
||||
|
@ -939,26 +939,6 @@ void LCodeGen::DoParameter(LParameter* instr) {
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoCallStub(LCallStub* instr) {
|
||||
DCHECK(ToRegister(instr->context()).is(cp));
|
||||
DCHECK(ToRegister(instr->result()).is(v0));
|
||||
switch (instr->hydrogen()->major_key()) {
|
||||
case CodeStub::RegExpExec: {
|
||||
RegExpExecStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
case CodeStub::SubString: {
|
||||
SubStringStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) {
|
||||
GenerateOsrPrologue();
|
||||
}
|
||||
|
@ -2408,12 +2408,6 @@ LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) {
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoCallStub(HCallStub* instr) {
|
||||
LOperand* context = UseFixed(instr->context(), cp);
|
||||
return MarkAsCall(DefineFixed(new(zone()) LCallStub(context), v0), instr);
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) {
|
||||
// There are no real uses of the arguments object.
|
||||
// arguments.length and element access are supported directly on
|
||||
|
@ -35,7 +35,6 @@ class LCodeGen;
|
||||
V(CallFunction) \
|
||||
V(CallNewArray) \
|
||||
V(CallRuntime) \
|
||||
V(CallStub) \
|
||||
V(CheckArrayBufferNotNeutered) \
|
||||
V(CheckInstanceType) \
|
||||
V(CheckMaps) \
|
||||
@ -455,19 +454,6 @@ class LParameter final : public LTemplateInstruction<1, 0, 0> {
|
||||
};
|
||||
|
||||
|
||||
class LCallStub final : public LTemplateInstruction<1, 1, 0> {
|
||||
public:
|
||||
explicit LCallStub(LOperand* context) {
|
||||
inputs_[0] = context;
|
||||
}
|
||||
|
||||
LOperand* context() { return inputs_[0]; }
|
||||
|
||||
DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
|
||||
DECLARE_HYDROGEN_ACCESSOR(CallStub)
|
||||
};
|
||||
|
||||
|
||||
class LUnknownOSRValue final : public LTemplateInstruction<1, 0, 0> {
|
||||
public:
|
||||
bool HasInterestingComment(LCodeGen* gen) const override { return false; }
|
||||
|
@ -928,26 +928,6 @@ void LCodeGen::DoParameter(LParameter* instr) {
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoCallStub(LCallStub* instr) {
|
||||
DCHECK(ToRegister(instr->context()).is(cp));
|
||||
DCHECK(ToRegister(instr->result()).is(v0));
|
||||
switch (instr->hydrogen()->major_key()) {
|
||||
case CodeStub::RegExpExec: {
|
||||
RegExpExecStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
case CodeStub::SubString: {
|
||||
SubStringStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) {
|
||||
GenerateOsrPrologue();
|
||||
}
|
||||
|
@ -2413,12 +2413,6 @@ LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) {
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoCallStub(HCallStub* instr) {
|
||||
LOperand* context = UseFixed(instr->context(), cp);
|
||||
return MarkAsCall(DefineFixed(new(zone()) LCallStub(context), v0), instr);
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) {
|
||||
// There are no real uses of the arguments object.
|
||||
// arguments.length and element access are supported directly on
|
||||
|
@ -37,7 +37,6 @@ class LCodeGen;
|
||||
V(CallFunction) \
|
||||
V(CallNewArray) \
|
||||
V(CallRuntime) \
|
||||
V(CallStub) \
|
||||
V(CheckArrayBufferNotNeutered) \
|
||||
V(CheckInstanceType) \
|
||||
V(CheckMaps) \
|
||||
@ -458,19 +457,6 @@ class LParameter final : public LTemplateInstruction<1, 0, 0> {
|
||||
};
|
||||
|
||||
|
||||
class LCallStub final : public LTemplateInstruction<1, 1, 0> {
|
||||
public:
|
||||
explicit LCallStub(LOperand* context) {
|
||||
inputs_[0] = context;
|
||||
}
|
||||
|
||||
LOperand* context() { return inputs_[0]; }
|
||||
|
||||
DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
|
||||
DECLARE_HYDROGEN_ACCESSOR(CallStub)
|
||||
};
|
||||
|
||||
|
||||
class LUnknownOSRValue final : public LTemplateInstruction<1, 0, 0> {
|
||||
public:
|
||||
bool HasInterestingComment(LCodeGen* gen) const override { return false; }
|
||||
|
@ -890,26 +890,6 @@ void LCodeGen::DoParameter(LParameter* instr) {
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoCallStub(LCallStub* instr) {
|
||||
DCHECK(ToRegister(instr->context()).is(cp));
|
||||
DCHECK(ToRegister(instr->result()).is(r3));
|
||||
switch (instr->hydrogen()->major_key()) {
|
||||
case CodeStub::RegExpExec: {
|
||||
RegExpExecStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
case CodeStub::SubString: {
|
||||
SubStringStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) {
|
||||
GenerateOsrPrologue();
|
||||
}
|
||||
|
@ -2414,12 +2414,6 @@ LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) {
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoCallStub(HCallStub* instr) {
|
||||
LOperand* context = UseFixed(instr->context(), cp);
|
||||
return MarkAsCall(DefineFixed(new (zone()) LCallStub(context), r3), instr);
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) {
|
||||
// There are no real uses of the arguments object.
|
||||
// arguments.length and element access are supported directly on
|
||||
|
@ -35,7 +35,6 @@ class LCodeGen;
|
||||
V(CallFunction) \
|
||||
V(CallNewArray) \
|
||||
V(CallRuntime) \
|
||||
V(CallStub) \
|
||||
V(CheckArrayBufferNotNeutered) \
|
||||
V(CheckInstanceType) \
|
||||
V(CheckNonSmi) \
|
||||
@ -450,17 +449,6 @@ class LParameter final : public LTemplateInstruction<1, 0, 0> {
|
||||
};
|
||||
|
||||
|
||||
class LCallStub final : public LTemplateInstruction<1, 1, 0> {
|
||||
public:
|
||||
explicit LCallStub(LOperand* context) { inputs_[0] = context; }
|
||||
|
||||
LOperand* context() { return inputs_[0]; }
|
||||
|
||||
DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
|
||||
DECLARE_HYDROGEN_ACCESSOR(CallStub)
|
||||
};
|
||||
|
||||
|
||||
class LUnknownOSRValue final : public LTemplateInstruction<1, 0, 0> {
|
||||
public:
|
||||
bool HasInterestingComment(LCodeGen* gen) const override { return false; }
|
||||
|
@ -906,26 +906,6 @@ void LCodeGen::DoParameter(LParameter* instr) {
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoCallStub(LCallStub* instr) {
|
||||
DCHECK(ToRegister(instr->context()).is(rsi));
|
||||
DCHECK(ToRegister(instr->result()).is(rax));
|
||||
switch (instr->hydrogen()->major_key()) {
|
||||
case CodeStub::RegExpExec: {
|
||||
RegExpExecStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
case CodeStub::SubString: {
|
||||
SubStringStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) {
|
||||
GenerateOsrPrologue();
|
||||
}
|
||||
|
@ -2506,13 +2506,6 @@ LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) {
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoCallStub(HCallStub* instr) {
|
||||
LOperand* context = UseFixed(instr->context(), rsi);
|
||||
LCallStub* result = new(zone()) LCallStub(context);
|
||||
return MarkAsCall(DefineFixed(result, rax), instr);
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) {
|
||||
// There are no real uses of the arguments object.
|
||||
// arguments.length and element access are supported directly on
|
||||
|
@ -35,7 +35,6 @@ class LCodeGen;
|
||||
V(CallFunction) \
|
||||
V(CallNewArray) \
|
||||
V(CallRuntime) \
|
||||
V(CallStub) \
|
||||
V(CheckArrayBufferNotNeutered) \
|
||||
V(CheckInstanceType) \
|
||||
V(CheckMaps) \
|
||||
@ -462,19 +461,6 @@ class LParameter final : public LTemplateInstruction<1, 0, 0> {
|
||||
};
|
||||
|
||||
|
||||
class LCallStub final : public LTemplateInstruction<1, 1, 0> {
|
||||
public:
|
||||
explicit LCallStub(LOperand* context) {
|
||||
inputs_[0] = context;
|
||||
}
|
||||
|
||||
LOperand* context() { return inputs_[0]; }
|
||||
|
||||
DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
|
||||
DECLARE_HYDROGEN_ACCESSOR(CallStub)
|
||||
};
|
||||
|
||||
|
||||
class LUnknownOSRValue final : public LTemplateInstruction<1, 0, 0> {
|
||||
public:
|
||||
bool HasInterestingComment(LCodeGen* gen) const override { return false; }
|
||||
|
@ -1277,26 +1277,6 @@ void LCodeGen::DoParameter(LParameter* instr) {
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoCallStub(LCallStub* instr) {
|
||||
DCHECK(ToRegister(instr->context()).is(esi));
|
||||
DCHECK(ToRegister(instr->result()).is(eax));
|
||||
switch (instr->hydrogen()->major_key()) {
|
||||
case CodeStub::RegExpExec: {
|
||||
RegExpExecStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
case CodeStub::SubString: {
|
||||
SubStringStub stub(isolate());
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LCodeGen::DoUnknownOSRValue(LUnknownOSRValue* instr) {
|
||||
GenerateOsrPrologue();
|
||||
}
|
||||
|
@ -2522,13 +2522,6 @@ LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) {
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoCallStub(HCallStub* instr) {
|
||||
LOperand* context = UseFixed(instr->context(), esi);
|
||||
LCallStub* result = new(zone()) LCallStub(context);
|
||||
return MarkAsCall(DefineFixed(result, eax), instr);
|
||||
}
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) {
|
||||
// There are no real uses of the arguments object.
|
||||
// arguments.length and element access are supported directly on
|
||||
|
@ -39,7 +39,6 @@ class LCodeGen;
|
||||
V(CallFunction) \
|
||||
V(CallNewArray) \
|
||||
V(CallRuntime) \
|
||||
V(CallStub) \
|
||||
V(CheckArrayBufferNotNeutered) \
|
||||
V(CheckInstanceType) \
|
||||
V(CheckMaps) \
|
||||
@ -469,19 +468,6 @@ class LParameter final : public LTemplateInstruction<1, 0, 0> {
|
||||
};
|
||||
|
||||
|
||||
class LCallStub final : public LTemplateInstruction<1, 1, 0> {
|
||||
public:
|
||||
explicit LCallStub(LOperand* context) {
|
||||
inputs_[0] = context;
|
||||
}
|
||||
|
||||
LOperand* context() { return inputs_[0]; }
|
||||
|
||||
DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
|
||||
DECLARE_HYDROGEN_ACCESSOR(CallStub)
|
||||
};
|
||||
|
||||
|
||||
class LUnknownOSRValue final : public LTemplateInstruction<1, 0, 0> {
|
||||
public:
|
||||
bool HasInterestingComment(LCodeGen* gen) const override { return false; }
|
||||
|
Loading…
Reference in New Issue
Block a user