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:
mvstanton@chromium.org 2013-05-14 06:53:46 +00:00
parent 63a883aa92
commit 604eb35515

View File

@ -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);
}