Use HBoundsCheck to check string length.
authoryangguo@chromium.org <yangguo@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 20 Mar 2014 12:34:44 +0000 (12:34 +0000)
committeryangguo@chromium.org <yangguo@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 20 Mar 2014 12:34:44 +0000 (12:34 +0000)
R=bmeurer@chromium.org

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

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

src/hydrogen.cc

index f6e22d8..282fae7 100644 (file)
@@ -1793,11 +1793,8 @@ HValue* HGraphBuilder::BuildAddStringLengths(HValue* left_length,
                                              HValue* right_length) {
   // Compute the combined string length and check against max string length.
   HValue* length = AddUncasted<HAdd>(left_length, right_length);
-  IfBuilder if_nooverflow(this);
-  if_nooverflow.If<HCompareNumericAndBranch>(
-      length, Add<HConstant>(String::kMaxLength), Token::LTE);
-  if_nooverflow.Then();
-  if_nooverflow.ElseDeopt("String length exceeds limit");
+  HValue* max_length = Add<HConstant>(String::kMaxLength);
+  Add<HBoundsCheck>(length, max_length);
   return length;
 }