author | Tooru Fujisawa <arai_a@mac.com> |
Wed, 31 Jan 2024 08:54:45 +0000 (17 months ago) | |
changeset 694103 | 54687ab737ec033c1af34d9e81fc39f7812c106b |
parent 694102 | 520e28927657161e397c465a7f713bcad8c90457 |
child 694104 | 03ce887fcd1acc5a429af18d4eac74bb44395589 |
push id | 199153 |
push user | arai_a@mac.com |
push date | Wed, 31 Jan 2024 08:58:48 +0000 (17 months ago) |
treeherder | autoland@1cc0fa18c2bf [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mgaudet |
bugs | 1783397 |
milestone | 124.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
js/public/Id.h | file | annotate | diff | comparison | revisions | |
js/src/vm/Id.cpp | file | annotate | diff | comparison | revisions | |
js/src/vm/StringType.cpp | file | annotate | diff | comparison | revisions | |
js/src/vm/StringType.h | file | annotate | diff | comparison | revisions | |
js/src/vm/SymbolType.cpp | file | annotate | diff | comparison | revisions | |
js/src/vm/SymbolType.h | file | annotate | diff | comparison | revisions |
--- a/js/public/Id.h +++ b/js/public/Id.h @@ -211,16 +211,17 @@ class PropertyKey { #if defined(DEBUG) || defined(JS_JITSPEW) void dump() const; void dump(js::GenericPrinter& out) const; void dump(js::JSONPrinter& json) const; void dumpFields(js::JSONPrinter& json) const; void dumpPropertyName(js::GenericPrinter& out) const; + void dumpStringContent(js::GenericPrinter& out) const; #endif private: static bool isNonIntAtom(JSAtom* atom); static bool isNonIntAtom(JSString* atom); } JS_HAZ_GC_POINTER; } // namespace JS
--- a/js/src/vm/Id.cpp +++ b/js/src/vm/Id.cpp @@ -96,9 +96,23 @@ void JS::PropertyKey::dumpPropertyName(j toSymbol()->dumpPropertyName(out); } else if (isVoid()) { out.put("(void)"); } else { out.printf("Unknown(%zx)", size_t(asRawBits())); } } +void JS::PropertyKey::dumpStringContent(js::GenericPrinter& out) const { + if (isAtom()) { + toAtom()->dumpStringContent(out); + } else if (isInt()) { + out.printf("%d", toInt()); + } else if (isSymbol()) { + toSymbol()->dumpStringContent(out); + } else if (isVoid()) { + out.put("(void)"); + } else { + out.printf("Unknown(%zx)", size_t(asRawBits())); + } +} + #endif /* defined(DEBUG) || defined(JS_JITSPEW) */
--- a/js/src/vm/StringType.cpp +++ b/js/src/vm/StringType.cpp @@ -529,16 +529,22 @@ void JSString::dumpRepresentationFields( asRope().dumpOwnRepresentationFields(json); // Rope already shows the chars. return; } dumpCharsFields(json); } +void JSString::dumpStringContent(js::GenericPrinter& out) const { + dumpCharsSingleQuote(out); + + out.printf(" @ (%s*)0x%p", RepresentationToString(this), this); +} + void JSString::dumpPropertyName(js::GenericPrinter& out) const { dumpCharsNoQuote(out); } void JSString::dumpChars(js::GenericPrinter& out) const { out.putChar('"'); dumpCharsNoQuote(out); out.putChar('"');
--- a/js/src/vm/StringType.h +++ b/js/src/vm/StringType.h @@ -743,16 +743,17 @@ class JSString : public js::gc::CellWith void dump() const; void dump(js::GenericPrinter& out) const; void dump(js::JSONPrinter& json) const; void dumpCommonFields(js::JSONPrinter& json) const; void dumpCharsFields(js::JSONPrinter& json) const; void dumpFields(js::JSONPrinter& json) const; + void dumpStringContent(js::GenericPrinter& out) const; void dumpPropertyName(js::GenericPrinter& out) const; void dumpChars(js::GenericPrinter& out) const; void dumpCharsSingleQuote(js::GenericPrinter& out) const; void dumpCharsNoQuote(js::GenericPrinter& out) const; template <typename CharT> static void dumpCharsNoQuote(const CharT* s, size_t len,
--- a/js/src/vm/SymbolType.cpp +++ b/js/src/vm/SymbolType.cpp @@ -140,16 +140,24 @@ void Symbol::dumpFields(js::JSONPrinter& js::GenericPrinter& out = json.beginStringProperty("description"); description()->dumpCharsNoQuote(out); json.endStringProperty(); } else { json.nullProperty("description"); } } +void Symbol::dumpStringContent(js::GenericPrinter& out) const { + dumpPropertyName(out); + + if (!isWellKnownSymbol()) { + out.printf(" @ (JS::Symbol*)0x%p", this); + } +} + void Symbol::dumpPropertyName(js::GenericPrinter& out) const { if (isWellKnownSymbol()) { // All the well-known symbol names are ASCII. description()->dumpCharsNoQuote(out); } else if (code_ == SymbolCode::InSymbolRegistry || code_ == SymbolCode::UniqueSymbol) { out.printf(code_ == SymbolCode::InSymbolRegistry ? "Symbol.for(" : "Symbol(");
--- a/js/src/vm/SymbolType.h +++ b/js/src/vm/SymbolType.h @@ -101,16 +101,17 @@ class Symbol } #if defined(DEBUG) || defined(JS_JITSPEW) void dump() const; // Debugger-friendly stderr dump. void dump(js::GenericPrinter& out) const; void dump(js::JSONPrinter& json) const; void dumpFields(js::JSONPrinter& json) const; + void dumpStringContent(js::GenericPrinter& out) const; void dumpPropertyName(js::GenericPrinter& out) const; #endif static constexpr size_t offsetOfHash() { return offsetof(Symbol, hash_); } }; } /* namespace JS */