BinaryOpStub::GenerateSmiStub() on 32bit would erroneously patch the IC in case of a gc requirement. Brought the behavior into line with ARM and x64. Also some cleanup to label names.
BUG= R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/15102006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14653 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
63a883aa92
commit
604eb35515
@ -1633,7 +1633,9 @@ void BinaryOpStub::GenerateSmiStub(MacroAssembler* masm) {
|
||||
BinaryOpStub_GenerateSmiCode(
|
||||
masm, &call_runtime, ALLOW_HEAPNUMBER_RESULTS, op_);
|
||||
}
|
||||
__ bind(&call_runtime);
|
||||
|
||||
// Code falls through if the result is not returned as either a smi or heap
|
||||
// number.
|
||||
switch (op_) {
|
||||
case Token::ADD:
|
||||
case Token::SUB:
|
||||
@ -1653,6 +1655,27 @@ void BinaryOpStub::GenerateSmiStub(MacroAssembler* masm) {
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
__ bind(&call_runtime);
|
||||
switch (op_) {
|
||||
case Token::ADD:
|
||||
case Token::SUB:
|
||||
case Token::MUL:
|
||||
case Token::DIV:
|
||||
GenerateRegisterArgsPush(masm);
|
||||
break;
|
||||
case Token::MOD:
|
||||
case Token::BIT_OR:
|
||||
case Token::BIT_AND:
|
||||
case Token::BIT_XOR:
|
||||
case Token::SAR:
|
||||
case Token::SHL:
|
||||
case Token::SHR:
|
||||
break;
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
GenerateCallRuntime(masm);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user