From: verwaest Date: Thu, 5 Mar 2015 13:44:17 +0000 (-0800) Subject: Use faster IsDecimalDigit in the json parser X-Git-Tag: upstream/4.7.83~4021 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cb4540db3e37b65fc24a99441254f077b579ae68;p=platform%2Fupstream%2Fv8.git Use faster IsDecimalDigit in the json parser BUG= Review URL: https://codereview.chromium.org/974353002 Cr-Commit-Position: refs/heads/master@{#27019} --- diff --git a/src/json-parser.h b/src/json-parser.h index bb74310..4cf5257 100644 --- a/src/json-parser.h +++ b/src/json-parser.h @@ -314,7 +314,7 @@ Handle JsonParser::ParseJsonObject() { Advance(); uint32_t index = 0; - if (c0_ >= '0' && c0_ <= '9') { + if (IsDecimalDigit(c0_)) { // Maybe an array index, try to parse it. if (c0_ == '0') { // With a leading zero, the string has to be "0" only to be an index. @@ -325,7 +325,7 @@ Handle JsonParser::ParseJsonObject() { if (index > 429496729U - ((d > 5) ? 1 : 0)) break; index = (index * 10) + d; Advance(); - } while (c0_ >= '0' && c0_ <= '9'); + } while (IsDecimalDigit(c0_)); } if (c0_ == '"') { @@ -515,7 +515,7 @@ Handle JsonParser::ParseJsonNumber() { Advance(); // Prefix zero is only allowed if it's the only digit before // a decimal point or exponent. - if ('0' <= c0_ && c0_ <= '9') return ReportUnexpectedCharacter(); + if (IsDecimalDigit(c0_)) return ReportUnexpectedCharacter(); } else { int i = 0; int digits = 0; @@ -524,7 +524,7 @@ Handle JsonParser::ParseJsonNumber() { i = i * 10 + c0_ - '0'; digits++; Advance(); - } while (c0_ >= '0' && c0_ <= '9'); + } while (IsDecimalDigit(c0_)); if (c0_ != '.' && c0_ != 'e' && c0_ != 'E' && digits < 10) { SkipWhitespace(); return Handle(Smi::FromInt((negative ? -i : i)), isolate()); @@ -532,18 +532,18 @@ Handle JsonParser::ParseJsonNumber() { } if (c0_ == '.') { Advance(); - if (c0_ < '0' || c0_ > '9') return ReportUnexpectedCharacter(); + if (!IsDecimalDigit(c0_)) return ReportUnexpectedCharacter(); do { Advance(); - } while (c0_ >= '0' && c0_ <= '9'); + } while (IsDecimalDigit(c0_)); } if (AsciiAlphaToLower(c0_) == 'e') { Advance(); if (c0_ == '-' || c0_ == '+') Advance(); - if (c0_ < '0' || c0_ > '9') return ReportUnexpectedCharacter(); + if (!IsDecimalDigit(c0_)) return ReportUnexpectedCharacter(); do { Advance(); - } while (c0_ >= '0' && c0_ <= '9'); + } while (IsDecimalDigit(c0_)); } int length = position_ - beg_pos; double number;