Remove unnecessary HCompareNumericAndBranch when generating HShr instruction.

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/334573003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21799 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
haitao.feng@intel.com 2014-06-12 09:40:59 +00:00
parent 873237798b
commit 4891950b39

View File

@ -920,20 +920,6 @@ HValue* CodeStubGraphBuilder<BinaryOpICStub>::BuildCodeInitializedStub() {
// If we encounter a generic argument, the number conversion is
// observable, thus we cannot afford to bail out after the fact.
if (!state.HasSideEffects()) {
if (result_type->Is(Type::SignedSmall())) {
if (state.op() == Token::SHR) {
// TODO(olivf) Replace this by a SmiTagU Instruction.
// 0x40000000: this number would convert to negative when interpreting
// the register as signed value;
IfBuilder if_of(this);
if_of.IfNot<HCompareNumericAndBranch>(result,
Add<HConstant>(static_cast<int>(SmiValuesAre32Bits()
? 0x80000000 : 0x40000000)), Token::EQ_STRICT);
if_of.Then();
if_of.ElseDeopt("UInt->Smi oveflow");
if_of.End();
}
}
result = EnforceNumberType(result, result_type);
}