HIsStringAndBranch does an implicit SMI check if necessary.
authorbmeurer@chromium.org <bmeurer@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 14 Oct 2013 08:03:35 +0000 (08:03 +0000)
committerbmeurer@chromium.org <bmeurer@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 14 Oct 2013 08:03:35 +0000 (08:03 +0000)
No need to test for SMI first using HIsSmiAndBranch.

R=svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17175 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/code-stubs-hydrogen.cc

index c6fcac7..c9529a8 100644 (file)
@@ -885,8 +885,7 @@ HValue* CodeStubGraphBuilder<BinaryOpStub>::BuildCodeInitializedStub() {
     // critical.
     if (left_type->Maybe(Type::String())) {
       IfBuilder left_string(this);
-      left_string.IfNot<HIsSmiAndBranch>(left);
-      left_string.AndIf<HIsStringAndBranch>(left);
+      left_string.If<HIsStringAndBranch>(left);
       left_string.Then();
       Push(Add<HStringAdd>(left, right, STRING_ADD_CHECK_RIGHT));
       left_string.Else();
@@ -897,8 +896,7 @@ HValue* CodeStubGraphBuilder<BinaryOpStub>::BuildCodeInitializedStub() {
       result = Pop();
     } else {
       IfBuilder right_string(this);
-      right_string.IfNot<HIsSmiAndBranch>(right);
-      right_string.AndIf<HIsStringAndBranch>(right);
+      right_string.If<HIsStringAndBranch>(right);
       right_string.Then();
       Push(Add<HStringAdd>(left, right, STRING_ADD_CHECK_LEFT));
       right_string.Else();