MIPS: Remove the obsolete OverwriteMode optimization.
Port 634b0f20f4
BUG=
Review URL: https://codereview.chromium.org/900253002
Cr-Commit-Position: refs/heads/master@{#26467}
This commit is contained in:
parent
8241147f46
commit
4831e7b7c9
@ -2029,19 +2029,15 @@ void FullCodeGenerator::VisitAssignment(Assignment* expr) {
|
||||
__ push(v0); // Left operand goes on the stack.
|
||||
VisitForAccumulatorValue(expr->value());
|
||||
|
||||
OverwriteMode mode = expr->value()->ResultOverwriteAllowed()
|
||||
? OVERWRITE_RIGHT
|
||||
: NO_OVERWRITE;
|
||||
SetSourcePosition(expr->position() + 1);
|
||||
AccumulatorValueContext context(this);
|
||||
if (ShouldInlineSmiCase(op)) {
|
||||
EmitInlineSmiBinaryOp(expr->binary_operation(),
|
||||
op,
|
||||
mode,
|
||||
expr->target(),
|
||||
expr->value());
|
||||
} else {
|
||||
EmitBinaryOp(expr->binary_operation(), op, mode);
|
||||
EmitBinaryOp(expr->binary_operation(), op);
|
||||
}
|
||||
|
||||
// Deoptimization point in case the binary operation may have side effects.
|
||||
@ -2423,7 +2419,6 @@ void FullCodeGenerator::EmitKeyedSuperPropertyLoad(Property* prop) {
|
||||
|
||||
void FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr,
|
||||
Token::Value op,
|
||||
OverwriteMode mode,
|
||||
Expression* left_expr,
|
||||
Expression* right_expr) {
|
||||
Label done, smi_case, stub_call;
|
||||
@ -2444,7 +2439,7 @@ void FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr,
|
||||
patch_site.EmitJumpIfSmi(scratch1, &smi_case);
|
||||
|
||||
__ bind(&stub_call);
|
||||
Handle<Code> code = CodeFactory::BinaryOpIC(isolate(), op, mode).code();
|
||||
Handle<Code> code = CodeFactory::BinaryOpIC(isolate(), op).code();
|
||||
CallIC(code, expr->BinaryOperationFeedbackId());
|
||||
patch_site.EmitPatchInfo();
|
||||
__ jmp(&done);
|
||||
@ -2574,12 +2569,10 @@ void FullCodeGenerator::EmitClassDefineProperties(ClassLiteral* lit) {
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitBinaryOp(BinaryOperation* expr,
|
||||
Token::Value op,
|
||||
OverwriteMode mode) {
|
||||
void FullCodeGenerator::EmitBinaryOp(BinaryOperation* expr, Token::Value op) {
|
||||
__ mov(a0, result_register());
|
||||
__ pop(a1);
|
||||
Handle<Code> code = CodeFactory::BinaryOpIC(isolate(), op, mode).code();
|
||||
Handle<Code> code = CodeFactory::BinaryOpIC(isolate(), op).code();
|
||||
JumpPatchSite patch_site(masm_); // unbound, signals no inlined smi code.
|
||||
CallIC(code, expr->BinaryOperationFeedbackId());
|
||||
patch_site.EmitPatchInfo();
|
||||
@ -4850,8 +4843,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
||||
// Record position before stub call.
|
||||
SetSourcePosition(expr->position());
|
||||
|
||||
Handle<Code> code =
|
||||
CodeFactory::BinaryOpIC(isolate(), Token::ADD, NO_OVERWRITE).code();
|
||||
Handle<Code> code = CodeFactory::BinaryOpIC(isolate(), Token::ADD).code();
|
||||
CallIC(code, expr->CountBinOpFeedbackId());
|
||||
patch_site.EmitPatchInfo();
|
||||
__ bind(&done);
|
||||
|
@ -2066,8 +2066,7 @@ void LCodeGen::DoArithmeticT(LArithmeticT* instr) {
|
||||
DCHECK(ToRegister(instr->right()).is(a0));
|
||||
DCHECK(ToRegister(instr->result()).is(v0));
|
||||
|
||||
Handle<Code> code =
|
||||
CodeFactory::BinaryOpIC(isolate(), instr->op(), NO_OVERWRITE).code();
|
||||
Handle<Code> code = CodeFactory::BinaryOpIC(isolate(), instr->op()).code();
|
||||
CallCode(code, RelocInfo::CODE_TARGET, instr);
|
||||
// Other arch use a nop here, to signal that there is no inlined
|
||||
// patchable code. Mips does not need the nop, since our marker
|
||||
|
@ -2026,19 +2026,15 @@ void FullCodeGenerator::VisitAssignment(Assignment* expr) {
|
||||
__ push(v0); // Left operand goes on the stack.
|
||||
VisitForAccumulatorValue(expr->value());
|
||||
|
||||
OverwriteMode mode = expr->value()->ResultOverwriteAllowed()
|
||||
? OVERWRITE_RIGHT
|
||||
: NO_OVERWRITE;
|
||||
SetSourcePosition(expr->position() + 1);
|
||||
AccumulatorValueContext context(this);
|
||||
if (ShouldInlineSmiCase(op)) {
|
||||
EmitInlineSmiBinaryOp(expr->binary_operation(),
|
||||
op,
|
||||
mode,
|
||||
expr->target(),
|
||||
expr->value());
|
||||
} else {
|
||||
EmitBinaryOp(expr->binary_operation(), op, mode);
|
||||
EmitBinaryOp(expr->binary_operation(), op);
|
||||
}
|
||||
|
||||
// Deoptimization point in case the binary operation may have side effects.
|
||||
@ -2421,7 +2417,6 @@ void FullCodeGenerator::EmitKeyedSuperPropertyLoad(Property* prop) {
|
||||
|
||||
void FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr,
|
||||
Token::Value op,
|
||||
OverwriteMode mode,
|
||||
Expression* left_expr,
|
||||
Expression* right_expr) {
|
||||
Label done, smi_case, stub_call;
|
||||
@ -2442,7 +2437,7 @@ void FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr,
|
||||
patch_site.EmitJumpIfSmi(scratch1, &smi_case);
|
||||
|
||||
__ bind(&stub_call);
|
||||
Handle<Code> code = CodeFactory::BinaryOpIC(isolate(), op, mode).code();
|
||||
Handle<Code> code = CodeFactory::BinaryOpIC(isolate(), op).code();
|
||||
CallIC(code, expr->BinaryOperationFeedbackId());
|
||||
patch_site.EmitPatchInfo();
|
||||
__ jmp(&done);
|
||||
@ -2571,12 +2566,10 @@ void FullCodeGenerator::EmitClassDefineProperties(ClassLiteral* lit) {
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitBinaryOp(BinaryOperation* expr,
|
||||
Token::Value op,
|
||||
OverwriteMode mode) {
|
||||
void FullCodeGenerator::EmitBinaryOp(BinaryOperation* expr, Token::Value op) {
|
||||
__ mov(a0, result_register());
|
||||
__ pop(a1);
|
||||
Handle<Code> code = CodeFactory::BinaryOpIC(isolate(), op, mode).code();
|
||||
Handle<Code> code = CodeFactory::BinaryOpIC(isolate(), op).code();
|
||||
JumpPatchSite patch_site(masm_); // unbound, signals no inlined smi code.
|
||||
CallIC(code, expr->BinaryOperationFeedbackId());
|
||||
patch_site.EmitPatchInfo();
|
||||
@ -4850,8 +4843,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
||||
// Record position before stub call.
|
||||
SetSourcePosition(expr->position());
|
||||
|
||||
Handle<Code> code =
|
||||
CodeFactory::BinaryOpIC(isolate(), Token::ADD, NO_OVERWRITE).code();
|
||||
Handle<Code> code = CodeFactory::BinaryOpIC(isolate(), Token::ADD).code();
|
||||
CallIC(code, expr->CountBinOpFeedbackId());
|
||||
patch_site.EmitPatchInfo();
|
||||
__ bind(&done);
|
||||
|
@ -2023,8 +2023,7 @@ void LCodeGen::DoArithmeticT(LArithmeticT* instr) {
|
||||
DCHECK(ToRegister(instr->right()).is(a0));
|
||||
DCHECK(ToRegister(instr->result()).is(v0));
|
||||
|
||||
Handle<Code> code =
|
||||
CodeFactory::BinaryOpIC(isolate(), instr->op(), NO_OVERWRITE).code();
|
||||
Handle<Code> code = CodeFactory::BinaryOpIC(isolate(), instr->op()).code();
|
||||
CallCode(code, RelocInfo::CODE_TARGET, instr);
|
||||
// Other arch use a nop here, to signal that there is no inlined
|
||||
// patchable code. Mips does not need the nop, since our marker
|
||||
|
Loading…
Reference in New Issue
Block a user