Revision: 19883
Author:   [email protected]
Date:     Thu Mar 13 09:15:14 2014 UTC
Log:      Convert scanner buffers to use standard character types.

[email protected]

BUG=

Review URL: https://codereview.chromium.org/198583003
http://code.google.com/p/v8/source/detail?r=19883

Modified:
 /branches/bleeding_edge/src/parser.cc
 /branches/bleeding_edge/src/preparse-data.h
 /branches/bleeding_edge/src/scanner.cc
 /branches/bleeding_edge/src/scanner.h

=======================================
--- /branches/bleeding_edge/src/parser.cc       Wed Mar 12 14:03:25 2014 UTC
+++ /branches/bleeding_edge/src/parser.cc       Thu Mar 13 09:15:14 2014 UTC
@@ -3512,8 +3512,8 @@
   };

   // Logs a symbol creation of a literal or identifier.
-  virtual void LogAsciiSymbol(int start, Vector<const char> literal) { }
-  virtual void LogUtf16Symbol(int start, Vector<const uc16> literal) { }
+ virtual void LogOneByteSymbol(int start, Vector<const uint8_t> literal) { } + virtual void LogTwoByteSymbol(int start, Vector<const uint16_t> literal) { }

   // Logs an error message and marks the log as containing an error.
   // Further logging will be ignored, and ExtractData will return a vector
=======================================
--- /branches/bleeding_edge/src/preparse-data.h Tue Mar 11 14:41:22 2014 UTC
+++ /branches/bleeding_edge/src/preparse-data.h Thu Mar 13 09:15:14 2014 UTC
@@ -52,8 +52,8 @@
                            StrictMode strict_mode) = 0;

   // Logs a symbol creation of a literal or identifier.
-  virtual void LogAsciiSymbol(int start, Vector<const char> literal) { }
-  virtual void LogUtf16Symbol(int start, Vector<const uc16> literal) { }
+ virtual void LogOneByteSymbol(int start, Vector<const uint8_t> literal) = 0; + virtual void LogTwoByteSymbol(int start, Vector<const uint16_t> literal) = 0;

   // Logs an error message and marks the log as containing an error.
   // Further logging will be ignored, and ExtractData will return a vector
@@ -148,8 +148,8 @@
 class PartialParserRecorder : public FunctionLoggingParserRecorder {
  public:
   PartialParserRecorder() : FunctionLoggingParserRecorder() { }
-  virtual void LogAsciiSymbol(int start, Vector<const char> literal) { }
-  virtual void LogUtf16Symbol(int start, Vector<const uc16> literal) { }
+ virtual void LogOneByteSymbol(int start, Vector<const uint8_t> literal) { } + virtual void LogTwoByteSymbol(int start, Vector<const uint16_t> literal) { }
   virtual ~PartialParserRecorder() { }
   virtual Vector<unsigned> ExtractData();
   virtual int symbol_position() { return 0; }
@@ -165,13 +165,13 @@
   CompleteParserRecorder();
   virtual ~CompleteParserRecorder() { }

-  virtual void LogAsciiSymbol(int start, Vector<const char> literal) {
+  virtual void LogOneByteSymbol(int start, Vector<const uint8_t> literal) {
     if (!is_recording_) return;
     int hash = vector_hash(literal);
-    LogSymbol(start, hash, true, Vector<const byte>::cast(literal));
+    LogSymbol(start, hash, true, literal);
   }

-  virtual void LogUtf16Symbol(int start, Vector<const uc16> literal) {
+ virtual void LogTwoByteSymbol(int start, Vector<const uint16_t> literal) {
     if (!is_recording_) return;
     int hash = vector_hash(literal);
     LogSymbol(start, hash, false, Vector<const byte>::cast(literal));
=======================================
--- /branches/bleeding_edge/src/scanner.cc      Thu Mar 13 08:29:31 2014 UTC
+++ /branches/bleeding_edge/src/scanner.cc      Thu Mar 13 09:15:14 2014 UTC
@@ -909,7 +909,7 @@
   KEYWORD("yield", Token::YIELD)


-static Token::Value KeywordOrIdentifierToken(const char* input,
+static Token::Value KeywordOrIdentifierToken(const uint8_t* input,
                                              int input_length,
                                              bool harmony_scoping,
                                              bool harmony_modules) {
@@ -985,7 +985,7 @@
   literal.Complete();

   if (next_.literal_chars->is_one_byte()) {
-    Vector<const char> chars = next_.literal_chars->one_byte_literal();
+    Vector<const uint8_t> chars = next_.literal_chars->one_byte_literal();
     return KeywordOrIdentifierToken(chars.start(),
                                     chars.length(),
                                     harmony_scoping_,
@@ -1123,7 +1123,7 @@
Vector<const uint8_t>::cast(next_literal_one_byte_string()), tenured);
   } else {
     return isolate->factory()->NewStringFromTwoByte(
-          next_literal_utf16_string(), tenured);
+          next_literal_two_byte_string(), tenured);
   }
 }

@@ -1131,10 +1131,10 @@
 Handle<String> Scanner::AllocateInternalizedString(Isolate* isolate) {
   if (is_literal_one_byte()) {
     return isolate->factory()->InternalizeOneByteString(
-        Vector<const uint8_t>::cast(literal_one_byte_string()));
+        literal_one_byte_string());
   } else {
     return isolate->factory()->InternalizeTwoByteString(
-        literal_utf16_string());
+        literal_two_byte_string());
   }
 }

@@ -1142,7 +1142,7 @@
 double Scanner::DoubleValue() {
   ASSERT(is_literal_one_byte());
   return StringToDouble(
-      unicode_cache_, literal_one_byte_string(),
+      unicode_cache_, Vector<const char>::cast(literal_one_byte_string()),
       ALLOW_HEX | ALLOW_OCTAL | ALLOW_IMPLICIT_OCTAL | ALLOW_BINARY);
 }

@@ -1154,32 +1154,32 @@

 int Scanner::FindSymbol(DuplicateFinder* finder, int value) {
   if (is_literal_one_byte()) {
-    return finder->AddAsciiSymbol(literal_one_byte_string(), value);
+    return finder->AddOneByteSymbol(literal_one_byte_string(), value);
   }
-  return finder->AddUtf16Symbol(literal_utf16_string(), value);
+  return finder->AddTwoByteSymbol(literal_two_byte_string(), value);
 }


 void Scanner::LogSymbol(ParserRecorder* log, int position) {
   if (is_literal_one_byte()) {
-    log->LogAsciiSymbol(position, literal_one_byte_string());
+    log->LogOneByteSymbol(position, literal_one_byte_string());
   } else {
-    log->LogUtf16Symbol(position, literal_utf16_string());
+    log->LogTwoByteSymbol(position, literal_two_byte_string());
   }
 }


-int DuplicateFinder::AddAsciiSymbol(Vector<const char> key, int value) {
-  return AddSymbol(Vector<const byte>::cast(key), true, value);
+int DuplicateFinder::AddOneByteSymbol(Vector<const uint8_t> key, int value) {
+  return AddSymbol(key, true, value);
 }


-int DuplicateFinder::AddUtf16Symbol(Vector<const uint16_t> key, int value) {
-  return AddSymbol(Vector<const byte>::cast(key), false, value);
+int DuplicateFinder::AddTwoByteSymbol(Vector<const uint16_t> key, int value) {
+  return AddSymbol(Vector<const uint8_t>::cast(key), false, value);
 }


-int DuplicateFinder::AddSymbol(Vector<const byte> key,
+int DuplicateFinder::AddSymbol(Vector<const uint8_t> key,
                                bool is_one_byte,
                                int value) {
   uint32_t hash = Hash(key, is_one_byte);
@@ -1192,15 +1192,16 @@
 }


-int DuplicateFinder::AddNumber(Vector<const char> key, int value) {
+int DuplicateFinder::AddNumber(Vector<const uint8_t> key, int value) {
   ASSERT(key.length() > 0);
   // Quick check for already being in canonical form.
   if (IsNumberCanonical(key)) {
-    return AddAsciiSymbol(key, value);
+    return AddOneByteSymbol(key, value);
   }

int flags = ALLOW_HEX | ALLOW_OCTAL | ALLOW_IMPLICIT_OCTAL | ALLOW_BINARY; - double double_value = StringToDouble(unicode_constants_, key, flags, 0.0);
+  double double_value = StringToDouble(
+      unicode_constants_, Vector<const char>::cast(key), flags, 0.0);
   int length;
   const char* string;
   if (!std::isfinite(double_value)) {
@@ -1216,7 +1217,7 @@
 }


-bool DuplicateFinder::IsNumberCanonical(Vector<const char> number) {
+bool DuplicateFinder::IsNumberCanonical(Vector<const uint8_t> number) {
   // Test for a safe approximation of number literals that are already
   // in canonical form: max 15 digits, no leading zeroes, except an
   // integer part that is a single zero, and no trailing zeros below
@@ -1235,7 +1236,7 @@
   pos++;
   bool invalid_last_digit = true;
   while (pos < length) {
-    byte digit = number[pos] - '0';
+    uint8_t digit = number[pos] - '0';
     if (digit > '9' - '0') return false;
     invalid_last_digit = (digit == 0);
     pos++;
@@ -1244,7 +1245,7 @@
 }


-uint32_t DuplicateFinder::Hash(Vector<const byte> key, bool is_one_byte) {
+uint32_t DuplicateFinder::Hash(Vector<const uint8_t> key, bool is_one_byte) {
   // Primitive hash function, almost identical to the one used
   // for strings (except that it's seeded by the length and ASCII-ness).
   int length = key.length();
@@ -1280,7 +1281,7 @@
 }


-byte* DuplicateFinder::BackupKey(Vector<const byte> bytes,
+byte* DuplicateFinder::BackupKey(Vector<const uint8_t> bytes,
                                  bool is_one_byte) {
   uint32_t one_byte_length = (bytes.length() << 1) | (is_one_byte ? 1 : 0);
   backing_store_.StartSequence();
@@ -1290,15 +1291,18 @@
     if (one_byte_length >= (1 << 14)) {
       if (one_byte_length >= (1 << 21)) {
         if (one_byte_length >= (1 << 28)) {
- backing_store_.Add(static_cast<byte>((one_byte_length >> 28) | 0x80));
+          backing_store_.Add(
+              static_cast<uint8_t>((one_byte_length >> 28) | 0x80));
         }
- backing_store_.Add(static_cast<byte>((one_byte_length >> 21) | 0x80u));
+        backing_store_.Add(
+            static_cast<uint8_t>((one_byte_length >> 21) | 0x80u));
       }
- backing_store_.Add(static_cast<byte>((one_byte_length >> 14) | 0x80u));
+      backing_store_.Add(
+          static_cast<uint8_t>((one_byte_length >> 14) | 0x80u));
     }
-    backing_store_.Add(static_cast<byte>((one_byte_length >> 7) | 0x80u));
+ backing_store_.Add(static_cast<uint8_t>((one_byte_length >> 7) | 0x80u));
   }
-  backing_store_.Add(static_cast<byte>(one_byte_length & 0x7f));
+  backing_store_.Add(static_cast<uint8_t>(one_byte_length & 0x7f));

   backing_store_.AddBlock(bytes);
   return backing_store_.EndSequence().start();
=======================================
--- /branches/bleeding_edge/src/scanner.h       Thu Mar 13 08:29:31 2014 UTC
+++ /branches/bleeding_edge/src/scanner.h       Thu Mar 13 09:15:14 2014 UTC
@@ -120,8 +120,8 @@
   virtual bool ReadBlock() = 0;
   virtual unsigned SlowSeekForward(unsigned code_unit_count) = 0;

-  const uc16* buffer_cursor_;
-  const uc16* buffer_end_;
+  const uint16_t* buffer_cursor_;
+  const uint16_t* buffer_end_;
   unsigned pos_;
 };

@@ -169,32 +169,32 @@
         backing_store_(16),
         map_(&Match) { }

-  int AddAsciiSymbol(Vector<const char> key, int value);
-  int AddUtf16Symbol(Vector<const uint16_t> key, int value);
+  int AddOneByteSymbol(Vector<const uint8_t> key, int value);
+  int AddTwoByteSymbol(Vector<const uint16_t> key, int value);
   // Add a a number literal by converting it (if necessary)
   // to the string that ToString(ToNumber(literal)) would generate.
   // and then adding that string with AddAsciiSymbol.
   // This string is the actual value used as key in an object literal,
   // and the one that must be different from the other keys.
-  int AddNumber(Vector<const char> key, int value);
+  int AddNumber(Vector<const uint8_t> key, int value);

  private:
-  int AddSymbol(Vector<const byte> key, bool is_one_byte, int value);
+  int AddSymbol(Vector<const uint8_t> key, bool is_one_byte, int value);
   // Backs up the key and its length in the backing store.
   // The backup is stored with a base 127 encoding of the
-  // length (plus a bit saying whether the string is ASCII),
+  // length (plus a bit saying whether the string is one byte),
   // followed by the bytes of the key.
-  byte* BackupKey(Vector<const byte> key, bool is_one_byte);
+  uint8_t* BackupKey(Vector<const uint8_t> key, bool is_one_byte);

   // Compare two encoded keys (both pointing into the backing store)
   // for having the same base-127 encoded lengths and ASCII-ness,
   // and then having the same 'length' bytes following.
   static bool Match(void* first, void* second);
   // Creates a hash from a sequence of bytes.
-  static uint32_t Hash(Vector<const byte> key, bool is_one_byte);
+  static uint32_t Hash(Vector<const uint8_t> key, bool is_one_byte);
   // Checks whether a string containing a JS number is its canonical
   // form.
-  static bool IsNumberCanonical(Vector<const char> key);
+  static bool IsNumberCanonical(Vector<const uint8_t> key);

   // Size of buffer. Sufficient for using it to call DoubleToCString in
   // from conversions.h.
@@ -230,10 +230,10 @@
         position_ += kOneByteSize;
         return;
       }
-      ConvertToUtf16();
+      ConvertToTwoByte();
     }
     ASSERT(code_unit < 0x10000u);
-    *reinterpret_cast<uc16*>(&backing_store_[position_]) = code_unit;
+    *reinterpret_cast<uint16_t*>(&backing_store_[position_]) = code_unit;
     position_ += kUC16Size;
   }

@@ -244,18 +244,18 @@
         (memcmp(keyword.start(), backing_store_.start(), position_) == 0);
   }

-  Vector<const uc16> utf16_literal() {
+  Vector<const uint16_t> two_byte_literal() {
     ASSERT(!is_one_byte_);
     ASSERT((position_ & 0x1) == 0);
-    return Vector<const uc16>(
-        reinterpret_cast<const uc16*>(backing_store_.start()),
+    return Vector<const uint16_t>(
+        reinterpret_cast<const uint16_t*>(backing_store_.start()),
         position_ >> 1);
   }

-  Vector<const char> one_byte_literal() {
+  Vector<const uint8_t> one_byte_literal() {
     ASSERT(is_one_byte_);
-    return Vector<const char>(
-        reinterpret_cast<const char*>(backing_store_.start()),
+    return Vector<const uint8_t>(
+        reinterpret_cast<const uint8_t*>(backing_store_.start()),
         position_);
   }

@@ -286,7 +286,7 @@
     backing_store_ = new_store;
   }

-  void ConvertToUtf16() {
+  void ConvertToTwoByte() {
     ASSERT(is_one_byte_);
     Vector<byte> new_store;
     int new_content_size = position_ * kUC16Size;
@@ -298,7 +298,7 @@
       new_store = backing_store_;
     }
     uint8_t* src = backing_store_.start();
-    uc16* dst = reinterpret_cast<uc16*>(new_store.start());
+    uint16_t* dst = reinterpret_cast<uint16_t*>(new_store.start());
     for (int i = position_ - 1; i >= 0; i--) {
       dst[i] = src[i];
     }
@@ -408,7 +408,9 @@
     if (is_literal_one_byte() &&
         literal_length() == length &&
         !literal_contains_escapes()) {
-      return !strncmp(literal_one_byte_string().start(), data, length);
+      const char* token =
+          reinterpret_cast<const char*>(literal_one_byte_string().start());
+      return !strncmp(token, data, length);
     }
     return false;
   }
@@ -416,7 +418,8 @@
     if (is_literal_one_byte() &&
         literal_length() == 3 &&
         !literal_contains_escapes()) {
-      const char* token = literal_one_byte_string().start();
+      const char* token =
+          reinterpret_cast<const char*>(literal_one_byte_string().start());
       *is_get = strncmp(token, "get", 3) == 0;
       *is_set = !*is_get && strncmp(token, "set", 3) == 0;
     }
@@ -551,13 +554,13 @@
   // numbers.
   // These functions only give the correct result if the literal
   // was scanned between calls to StartLiteral() and TerminateLiteral().
-  Vector<const char> literal_one_byte_string() {
+  Vector<const uint8_t> literal_one_byte_string() {
     ASSERT_NOT_NULL(current_.literal_chars);
     return current_.literal_chars->one_byte_literal();
   }
-  Vector<const uc16> literal_utf16_string() {
+  Vector<const uint16_t> literal_two_byte_string() {
     ASSERT_NOT_NULL(current_.literal_chars);
-    return current_.literal_chars->utf16_literal();
+    return current_.literal_chars->two_byte_literal();
   }
   bool is_literal_one_byte() {
     ASSERT_NOT_NULL(current_.literal_chars);
@@ -569,13 +572,13 @@
   }
   // Returns the literal string for the next token (the token that
   // would be returned if Next() were called).
-  Vector<const char> next_literal_one_byte_string() {
+  Vector<const uint8_t> next_literal_one_byte_string() {
     ASSERT_NOT_NULL(next_.literal_chars);
     return next_.literal_chars->one_byte_literal();
   }
-  Vector<const uc16> next_literal_utf16_string() {
+  Vector<const uint16_t> next_literal_two_byte_string() {
     ASSERT_NOT_NULL(next_.literal_chars);
-    return next_.literal_chars->utf16_literal();
+    return next_.literal_chars->two_byte_literal();
   }
   bool is_next_literal_one_byte() {
     ASSERT_NOT_NULL(next_.literal_chars);

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to