| Index: src/json-stringifier.h
|
| diff --git a/src/json-stringifier.h b/src/json-stringifier.h
|
| index 426a3707cddd4a77672e3439371533fc43b13fc4..cec98443a5c628cb103c56e27aec2db4e35a4fb6 100644
|
| --- a/src/json-stringifier.h
|
| +++ b/src/json-stringifier.h
|
| @@ -60,7 +60,7 @@ class BasicJsonStringifier BASE_EMBEDDED {
|
| template <bool is_ascii, typename Char>
|
| INLINE(void Append_(const Char* chars));
|
|
|
| - INLINE(void Append(char c)) {
|
| + INLINE(void Append(uint8_t c)) {
|
| if (is_ascii_) {
|
| Append_<true>(c);
|
| } else {
|
| @@ -68,11 +68,11 @@ class BasicJsonStringifier BASE_EMBEDDED {
|
| }
|
| }
|
|
|
| - INLINE(void Append(const char* chars)) {
|
| + INLINE(void AppendAscii(const char* chars)) {
|
| if (is_ascii_) {
|
| - Append_<true>(chars);
|
| + Append_<true>(reinterpret_cast<const uint8_t*>(chars));
|
| } else {
|
| - Append_<false>(chars);
|
| + Append_<false>(reinterpret_cast<const uint8_t*>(chars));
|
| }
|
| }
|
|
|
| @@ -327,15 +327,15 @@ BasicJsonStringifier::Result BasicJsonStringifier::Serialize_(
|
| switch (Oddball::cast(*object)->kind()) {
|
| case Oddball::kFalse:
|
| if (deferred_string_key) SerializeDeferredKey(comma, key);
|
| - Append("false");
|
| + AppendAscii("false");
|
| return SUCCESS;
|
| case Oddball::kTrue:
|
| if (deferred_string_key) SerializeDeferredKey(comma, key);
|
| - Append("true");
|
| + AppendAscii("true");
|
| return SUCCESS;
|
| case Oddball::kNull:
|
| if (deferred_string_key) SerializeDeferredKey(comma, key);
|
| - Append("null");
|
| + AppendAscii("null");
|
| return SUCCESS;
|
| default:
|
| return UNCHANGED;
|
| @@ -412,7 +412,7 @@ BasicJsonStringifier::Result BasicJsonStringifier::SerializeJSValue(
|
| ASSERT(class_name == isolate_->heap()->Boolean_symbol());
|
| Object* value = JSValue::cast(*object)->value();
|
| ASSERT(value->IsBoolean());
|
| - Append(value->IsTrue() ? "true" : "false");
|
| + AppendAscii(value->IsTrue() ? "true" : "false");
|
| }
|
| return SUCCESS;
|
| }
|
| @@ -422,7 +422,7 @@ BasicJsonStringifier::Result BasicJsonStringifier::SerializeSmi(Smi* object) {
|
| static const int kBufferSize = 100;
|
| char chars[kBufferSize];
|
| Vector<char> buffer(chars, kBufferSize);
|
| - Append(IntToCString(object->value(), buffer));
|
| + AppendAscii(IntToCString(object->value(), buffer));
|
| return SUCCESS;
|
| }
|
|
|
| @@ -430,13 +430,13 @@ BasicJsonStringifier::Result BasicJsonStringifier::SerializeSmi(Smi* object) {
|
| BasicJsonStringifier::Result BasicJsonStringifier::SerializeDouble(
|
| double number) {
|
| if (isinf(number) || isnan(number)) {
|
| - Append("null");
|
| + AppendAscii("null");
|
| return SUCCESS;
|
| }
|
| static const int kBufferSize = 100;
|
| char chars[kBufferSize];
|
| Vector<char> buffer(chars, kBufferSize);
|
| - Append(DoubleToCString(number, buffer));
|
| + AppendAscii(DoubleToCString(number, buffer));
|
| return SUCCESS;
|
| }
|
|
|
| @@ -476,7 +476,7 @@ BasicJsonStringifier::Result BasicJsonStringifier::SerializeJSArray(
|
| SerializeElement(Handle<Object>(elements->get(i), isolate_), i);
|
| if (result == SUCCESS) continue;
|
| if (result == UNCHANGED) {
|
| - Append("null");
|
| + AppendAscii("null");
|
| } else {
|
| return result;
|
| }
|
| @@ -505,12 +505,12 @@ BasicJsonStringifier::Result BasicJsonStringifier::SerializeJSArraySlow(
|
| if (i > 0) Append(',');
|
| Handle<Object> element = Object::GetElement(object, i);
|
| if (element->IsUndefined()) {
|
| - Append("null");
|
| + AppendAscii("null");
|
| } else {
|
| Result result = SerializeElement(element, i);
|
| if (result == SUCCESS) continue;
|
| if (result == UNCHANGED) {
|
| - Append("null");
|
| + AppendAscii("null");
|
| } else {
|
| return result;
|
| }
|
| @@ -682,8 +682,9 @@ void BasicJsonStringifier::SerializeString_(Handle<String> string) {
|
| if (DoNotEscape(c)) {
|
| Append_<is_ascii, Char>(c);
|
| } else {
|
| - Append_<is_ascii, char>(
|
| - &JsonEscapeTable[c * kJsonEscapeTableEntrySize]);
|
| + Append_<is_ascii, uint8_t>(
|
| + reinterpret_cast<const uint8_t*>(
|
| + &JsonEscapeTable[c * kJsonEscapeTableEntrySize]));
|
| }
|
| // If GC moved the string, we need to refresh the vector.
|
| if (*string != string_location) {
|
| @@ -693,27 +694,22 @@ void BasicJsonStringifier::SerializeString_(Handle<String> string) {
|
| }
|
| }
|
|
|
| - Append_<is_ascii, char>('"');
|
| -}
|
| -
|
| -
|
| -template <>
|
| -bool BasicJsonStringifier::DoNotEscape(char c) {
|
| - return c >= '#' && c <= '~' && c != '\\';
|
| + Append_<is_ascii, uint8_t>('"');
|
| }
|
|
|
|
|
| -template <>
|
| -bool BasicJsonStringifier::DoNotEscape(uc16 c) {
|
| +template <typename Char>
|
| +bool BasicJsonStringifier::DoNotEscape(Char c) {
|
| return (c >= 0x80) || (c >= '#' && c <= '~' && c != '\\');
|
| }
|
|
|
|
|
| template <>
|
| -Vector<const char> BasicJsonStringifier::GetCharVector(Handle<String> string) {
|
| +Vector<const uint8_t> BasicJsonStringifier::GetCharVector(
|
| + Handle<String> string) {
|
| String::FlatContent flat = string->GetFlatContent();
|
| ASSERT(flat.IsAscii());
|
| - return flat.ToAsciiVector();
|
| + return flat.ToOneByteVector();
|
| }
|
|
|
|
|
| @@ -730,14 +726,14 @@ void BasicJsonStringifier::SerializeString(Handle<String> object) {
|
| String::FlatContent flat = object->GetFlatContent();
|
| if (is_ascii_) {
|
| if (flat.IsAscii()) {
|
| - SerializeString_<true, char>(object);
|
| + SerializeString_<true, uint8_t>(object);
|
| } else {
|
| ChangeEncoding();
|
| SerializeString(object);
|
| }
|
| } else {
|
| if (flat.IsAscii()) {
|
| - SerializeString_<false, char>(object);
|
| + SerializeString_<false, uint8_t>(object);
|
| } else {
|
| SerializeString_<false, uc16>(object);
|
| }
|
|
|