| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/objects.h" | 5 #include "src/objects.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <iomanip> | 8 #include <iomanip> |
| 9 #include <sstream> | 9 #include <sstream> |
| 10 | 10 |
| (...skipping 1895 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1906 this->synchronized_set_map(new_map); | 1906 this->synchronized_set_map(new_map); |
| 1907 | 1907 |
| 1908 ExternalOneByteString* self = ExternalOneByteString::cast(this); | 1908 ExternalOneByteString* self = ExternalOneByteString::cast(this); |
| 1909 self->set_resource(resource); | 1909 self->set_resource(resource); |
| 1910 if (is_internalized) self->Hash(); // Force regeneration of the hash value. | 1910 if (is_internalized) self->Hash(); // Force regeneration of the hash value. |
| 1911 | 1911 |
| 1912 heap->AdjustLiveBytes(this, new_size - size, Heap::CONCURRENT_TO_SWEEPER); | 1912 heap->AdjustLiveBytes(this, new_size - size, Heap::CONCURRENT_TO_SWEEPER); |
| 1913 return true; | 1913 return true; |
| 1914 } | 1914 } |
| 1915 | 1915 |
| 1916 | 1916 void String::StringShortPrint(StringStream* accumulator, bool show_details) { |
| 1917 void String::StringShortPrint(StringStream* accumulator) { | |
| 1918 int len = length(); | 1917 int len = length(); |
| 1919 if (len > kMaxShortPrintLength) { | 1918 if (len > kMaxShortPrintLength) { |
| 1920 accumulator->Add("<Very long string[%u]>", len); | 1919 accumulator->Add("<Very long string[%u]>", len); |
| 1921 return; | 1920 return; |
| 1922 } | 1921 } |
| 1923 | 1922 |
| 1924 if (!LooksValid()) { | 1923 if (!LooksValid()) { |
| 1925 accumulator->Add("<Invalid String>"); | 1924 accumulator->Add("<Invalid String>"); |
| 1926 return; | 1925 return; |
| 1927 } | 1926 } |
| 1928 | 1927 |
| 1929 StringCharacterStream stream(this); | 1928 StringCharacterStream stream(this); |
| 1930 | 1929 |
| 1931 bool truncated = false; | 1930 bool truncated = false; |
| 1932 if (len > kMaxShortPrintLength) { | 1931 if (len > kMaxShortPrintLength) { |
| 1933 len = kMaxShortPrintLength; | 1932 len = kMaxShortPrintLength; |
| 1934 truncated = true; | 1933 truncated = true; |
| 1935 } | 1934 } |
| 1936 bool one_byte = true; | 1935 bool one_byte = true; |
| 1937 for (int i = 0; i < len; i++) { | 1936 for (int i = 0; i < len; i++) { |
| 1938 uint16_t c = stream.GetNext(); | 1937 uint16_t c = stream.GetNext(); |
| 1939 | 1938 |
| 1940 if (c < 32 || c >= 127) { | 1939 if (c < 32 || c >= 127) { |
| 1941 one_byte = false; | 1940 one_byte = false; |
| 1942 } | 1941 } |
| 1943 } | 1942 } |
| 1944 stream.Reset(this); | 1943 stream.Reset(this); |
| 1945 if (one_byte) { | 1944 if (one_byte) { |
| 1946 accumulator->Add("<String[%u]: ", length()); | 1945 if (show_details) accumulator->Add("<String[%u]: ", length()); |
| 1947 for (int i = 0; i < len; i++) { | 1946 for (int i = 0; i < len; i++) { |
| 1948 accumulator->Put(static_cast<char>(stream.GetNext())); | 1947 accumulator->Put(static_cast<char>(stream.GetNext())); |
| 1949 } | 1948 } |
| 1950 accumulator->Put('>'); | 1949 if (show_details) accumulator->Put('>'); |
| 1951 } else { | 1950 } else { |
| 1952 // Backslash indicates that the string contains control | 1951 // Backslash indicates that the string contains control |
| 1953 // characters and that backslashes are therefore escaped. | 1952 // characters and that backslashes are therefore escaped. |
| 1954 accumulator->Add("<String[%u]\\: ", length()); | 1953 if (show_details) accumulator->Add("<String[%u]\\: ", length()); |
| 1955 for (int i = 0; i < len; i++) { | 1954 for (int i = 0; i < len; i++) { |
| 1956 uint16_t c = stream.GetNext(); | 1955 uint16_t c = stream.GetNext(); |
| 1957 if (c == '\n') { | 1956 if (c == '\n') { |
| 1958 accumulator->Add("\\n"); | 1957 accumulator->Add("\\n"); |
| 1959 } else if (c == '\r') { | 1958 } else if (c == '\r') { |
| 1960 accumulator->Add("\\r"); | 1959 accumulator->Add("\\r"); |
| 1961 } else if (c == '\\') { | 1960 } else if (c == '\\') { |
| 1962 accumulator->Add("\\\\"); | 1961 accumulator->Add("\\\\"); |
| 1963 } else if (c < 32 || c > 126) { | 1962 } else if (c < 32 || c > 126) { |
| 1964 accumulator->Add("\\x%02x", c); | 1963 accumulator->Add("\\x%02x", c); |
| 1965 } else { | 1964 } else { |
| 1966 accumulator->Put(static_cast<char>(c)); | 1965 accumulator->Put(static_cast<char>(c)); |
| 1967 } | 1966 } |
| 1968 } | 1967 } |
| 1969 if (truncated) { | 1968 if (truncated) { |
| 1970 accumulator->Put('.'); | 1969 accumulator->Put('.'); |
| 1971 accumulator->Put('.'); | 1970 accumulator->Put('.'); |
| 1972 accumulator->Put('.'); | 1971 accumulator->Put('.'); |
| 1973 } | 1972 } |
| 1974 accumulator->Put('>'); | 1973 if (show_details) accumulator->Put('>'); |
| 1975 } | 1974 } |
| 1976 return; | 1975 return; |
| 1977 } | 1976 } |
| 1978 | 1977 |
| 1979 | 1978 |
| 1980 void String::PrintUC16(std::ostream& os, int start, int end) { // NOLINT | 1979 void String::PrintUC16(std::ostream& os, int start, int end) { // NOLINT |
| 1981 if (end < 0) end = length(); | 1980 if (end < 0) end = length(); |
| 1982 StringCharacterStream stream(this, start); | 1981 StringCharacterStream stream(this, start); |
| 1983 for (int i = start; i < end && stream.HasMore(); i++) { | 1982 for (int i = start; i < end && stream.HasMore(); i++) { |
| 1984 os << AsUC16(stream.GetNext()); | 1983 os << AsUC16(stream.GetNext()); |
| (...skipping 13306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15291 Heap* heap = GetIsolate()->heap(); | 15290 Heap* heap = GetIsolate()->heap(); |
| 15292 #define SYMBOL_CHECK_AND_PRINT(name) \ | 15291 #define SYMBOL_CHECK_AND_PRINT(name) \ |
| 15293 if (this == heap->name()) return #name; | 15292 if (this == heap->name()) return #name; |
| 15294 PRIVATE_SYMBOL_LIST(SYMBOL_CHECK_AND_PRINT) | 15293 PRIVATE_SYMBOL_LIST(SYMBOL_CHECK_AND_PRINT) |
| 15295 #undef SYMBOL_CHECK_AND_PRINT | 15294 #undef SYMBOL_CHECK_AND_PRINT |
| 15296 return "UNKNOWN"; | 15295 return "UNKNOWN"; |
| 15297 } | 15296 } |
| 15298 | 15297 |
| 15299 | 15298 |
| 15300 void Symbol::SymbolShortPrint(std::ostream& os) { | 15299 void Symbol::SymbolShortPrint(std::ostream& os) { |
| 15301 os << "<Symbol: " << Hash(); | 15300 os << "<Symbol:"; |
| 15302 if (!name()->IsUndefined()) { | 15301 if (!name()->IsUndefined()) { |
| 15303 os << " "; | 15302 os << " "; |
| 15304 HeapStringAllocator allocator; | 15303 HeapStringAllocator allocator; |
| 15305 StringStream accumulator(&allocator); | 15304 StringStream accumulator(&allocator); |
| 15306 String::cast(name())->StringShortPrint(&accumulator); | 15305 String::cast(name())->StringShortPrint(&accumulator, false); |
| 15307 os << accumulator.ToCString().get(); | 15306 os << accumulator.ToCString().get(); |
| 15308 } else { | 15307 } else { |
| 15309 os << " (" << PrivateSymbolToName() << ")"; | 15308 os << " (" << PrivateSymbolToName() << ")"; |
| 15310 } | 15309 } |
| 15311 os << ">"; | 15310 os << ">"; |
| 15312 } | 15311 } |
| 15313 | 15312 |
| 15314 | 15313 |
| 15315 // StringSharedKeys are used as keys in the eval cache. | 15314 // StringSharedKeys are used as keys in the eval cache. |
| 15316 class StringSharedKey : public HashTableKey { | 15315 class StringSharedKey : public HashTableKey { |
| (...skipping 3076 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 18393 if (cell->value() != *new_value) { | 18392 if (cell->value() != *new_value) { |
| 18394 cell->set_value(*new_value); | 18393 cell->set_value(*new_value); |
| 18395 Isolate* isolate = cell->GetIsolate(); | 18394 Isolate* isolate = cell->GetIsolate(); |
| 18396 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 18395 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
| 18397 isolate, DependentCode::kPropertyCellChangedGroup); | 18396 isolate, DependentCode::kPropertyCellChangedGroup); |
| 18398 } | 18397 } |
| 18399 } | 18398 } |
| 18400 | 18399 |
| 18401 } // namespace internal | 18400 } // namespace internal |
| 18402 } // namespace v8 | 18401 } // namespace v8 |
| OLD | NEW |