In the current state, I get the following profile: ``` Weight | Weight% | Self Weight | Symbol ------ | ------- | ----------- | --------- 11.68 s | 6.3% | 11.68 s | mozilla::Result<js::frontend::HuffmanLookup, JS::Error&> js::frontend::BinASTTokenReaderContext::BitBuffer::getHuffmanLookup<(js::frontend::BinASTTokenReaderContext::Compression)0>(js::frontend::BinASTTokenReaderContext&) 10.28 s | 5.6% | 10.28 s | decltype(auto) mozilla::detail::VariantImplementation<unsigned char, 1ul, js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable>::matchN<mozilla::Variant<js::frontend::SingleLookupHuffmanTable<JSAtom*, unsigned char>, js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable> const, js::frontend::GenericHuffmanTable<JSAtom*>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6> const&), js::frontend::GenericHuffmanTable<JSAtom*>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6> const&), js::frontend::GenericHuffmanTable<JSAtom*>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::HuffmanTableUnreachable const&)>(mozilla::Variant<js::frontend::SingleLookupHuffmanTable<JSAtom*, unsigned char>, js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable> const&, js::frontend::GenericHuffmanTable<JSAtom*>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6> const&)&&, js::frontend::GenericHuffmanTable<JSAtom*>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6> const&)&&, js::frontend::GenericHuffmanTable<JSAtom*>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::HuffmanTableUnreachable const&)&&) 8.24 s | 4.5% | 8.24 s | decltype(auto) mozilla::detail::VariantImplementation<unsigned char, 1ul, js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable>::matchN<mozilla::Variant<js::frontend::SingleLookupHuffmanTable<js::frontend::BinASTKind, unsigned char>, js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable> const, js::frontend::GenericHuffmanTable<js::frontend::BinASTKind>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6> const&), js::frontend::GenericHuffmanTable<js::frontend::BinASTKind>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6> const&), js::frontend::GenericHuffmanTable<js::frontend::BinASTKind>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::HuffmanTableUnreachable const&)>(mozilla::Variant<js::frontend::SingleLookupHuffmanTable<js::frontend::BinASTKind, unsigned char>, js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable> const&, js::frontend::GenericHuffmanTable<js::frontend::BinASTKind>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6> const&)&&, js::frontend::GenericHuffmanTable<js::frontend::BinASTKind>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6> const&)&&, js::frontend::GenericHuffmanTable<js::frontend::BinASTKind>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::HuffmanTableUnreachable const&)&&) 7.94 s | 4.3% | 7.94 s | js::frontend::TagReader::operator()(js::frontend::HuffmanTableIndexedSymbolsSum const&) 6.96 s | 3.8% | 6.96 s | js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>::lookup(js::frontend::HuffmanLookup) const 6.41 s | 3.5% | 6.41 s | js::frontend::BinASTTokenReaderContext::enterTaggedTuple(js::frontend::BinASTKind&, js::frontend::BinASTTokenReaderContext::BinASTFields&, mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&, js::frontend::BinASTTokenReaderContext::AutoTaggedTuple&) 4.29 s | 2.3% | 4.29 s | js::frontend::FunctionBox::FunctionBox(JSContext*, js::frontend::TraceListNode*, JSFunction*, unsigned int, js::frontend::Directives, bool, js::GeneratorKind, js::FunctionAsyncKind) 3.98 s | 2.1% | 3.98 s | decltype(auto) mozilla::detail::VariantImplementation<unsigned char, 0ul, js::frontend::HuffmanTableUnreachable, js::frontend::HuffmanTableInitializing, js::frontend::HuffmanTableExplicitSymbolsF64, js::frontend::HuffmanTableExplicitSymbolsU32, js::frontend::HuffmanTableIndexedSymbolsSum, js::frontend::HuffmanTableIndexedSymbolsMaybeInterface, js::frontend::HuffmanTableIndexedSymbolsBool, js::frontend::HuffmanTableIndexedSymbolsStringEnum, js::frontend::HuffmanTableIndexedSymbolsLiteralString, js::frontend::HuffmanTableIndexedSymbolsOptionalLiteralString>::match<js::frontend::TagReader, mozilla::Variant<js::frontend::HuffmanTableUnreachable, js::frontend::HuffmanTableInitializing, js::frontend::HuffmanTableExplicitSymbolsF64, js::frontend::HuffmanTableExplicitSymbolsU32, js::frontend::HuffmanTableIndexedSymbolsSum, js::frontend::HuffmanTableIndexedSymbolsMaybeInterface, js::frontend::HuffmanTableIndexedSymbolsBool, js::frontend::HuffmanTableIndexedSymbolsStringEnum, js::frontend::HuffmanTableIndexedSymbolsLiteralString, js::frontend::HuffmanTableIndexedSymbolsOptionalLiteralString> const>(js::frontend::TagReader&&, mozilla::Variant<js::frontend::HuffmanTableUnreachable, js::frontend::HuffmanTableInitializing, js::frontend::HuffmanTableExplicitSymbolsF64, js::frontend::HuffmanTableExplicitSymbolsU32, js::frontend::HuffmanTableIndexedSymbolsSum, js::frontend::HuffmanTableIndexedSymbolsMaybeInterface, js::frontend::HuffmanTableIndexedSymbolsBool, js::frontend::HuffmanTableIndexedSymbolsStringEnum, js::frontend::HuffmanTableIndexedSymbolsLiteralString, js::frontend::HuffmanTableIndexedSymbolsOptionalLiteralString> const&) 3.91 s | 2.1% | 3.91 s | js::frontend::UsedNameTracker::noteUse(JSContext*, JSAtom*, unsigned int, unsigned int) 3.84 s | 2.1% | 3.84 s | mozilla::Result<js::frontend::HuffmanTableIndexedSymbolsLiteralString::Contents, JS::Error&> js::frontend::BinASTTokenReaderContext::readFieldFromTable<js::frontend::HuffmanTableIndexedSymbolsLiteralString>(mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) 3.67 s | 2.0% | 3.67 s | js::frontend::BinASTParser<js::frontend::BinASTTokenReaderContext>::parseInterfaceIdentifierExpression(unsigned long, js::frontend::BinASTKind, js::frontend::BinASTTokenReaderContext::BinASTFields const&, mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) 3.62 s | 1.9% | 3.62 s | js::frontend::BinASTParser<js::frontend::BinASTTokenReaderContext>::parseInterfaceStaticMemberExpression(unsigned long, js::frontend::BinASTKind, js::frontend::BinASTTokenReaderContext::BinASTFields const&, mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) 3.54 s | 1.9% | 3.54 s | bool GetUTF8AtomizationData<JS::WTF8Chars>(JSContext*, JS::WTF8Chars, unsigned long*, JS::SmallestEncoding*, unsigned int*) 3.48 s | 1.9% | 3.48 s | decltype(auto) mozilla::detail::VariantImplementation<unsigned char, 1ul, js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable>::matchN<mozilla::Variant<js::frontend::SingleLookupHuffmanTable<unsigned int, unsigned char>, js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable> const, js::frontend::GenericHuffmanTable<unsigned int>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6> const&), js::frontend::GenericHuffmanTable<unsigned int>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6> const&), js::frontend::GenericHuffmanTable<unsigned int>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::HuffmanTableUnreachable const&)>(mozilla::Variant<js::frontend::SingleLookupHuffmanTable<unsigned int, unsigned char>, js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable> const&, js::frontend::GenericHuffmanTable<unsigned int>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6> const&)&&, js::frontend::GenericHuffmanTable<unsigned int>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6> const&)&&, js::frontend::GenericHuffmanTable<unsigned int>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::HuffmanTableUnreachable const&)&&) 3.39 s | 1.8% | 3.39 s | js::frontend::ParseNodeAllocator::allocNode(unsigned long) 2.54 s | 1.3% | 2.54 s | JSAtom* AtomizeUTF8OrWTF8Chars<JS::WTF8Chars>(JSContext*, char const*, unsigned long) 2.41 s | 1.3% | 2.41 s | js::frontend::BinASTTokenReaderContext::enterList(unsigned int&, mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&, js::frontend::BinASTTokenReaderContext::AutoList&) 2.23 s | 1.2% | 2.23 s | js::frontend::BinASTParser<js::frontend::BinASTTokenReaderContext>::parseInterfaceCallExpression(unsigned long, js::frontend::BinASTKind, js::frontend::BinASTTokenReaderContext::BinASTFields const&, mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) 2.10 s | 1.1% | 2.10 s | js::frontend::BinASTParser<js::frontend::BinASTTokenReaderContext>::parseArguments(mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) 2.02 s | 1.1% | 2.02 s | js::frontend::BinASTParser<js::frontend::BinASTTokenReaderContext>::parseInterfaceBinaryExpression(unsigned long, js::frontend::BinASTKind, js::frontend::BinASTTokenReaderContext::BinASTFields const&, mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) 1.96 s | 1.0% | 1.96 s | mozilla::Result<js::frontend::HuffmanTableIndexedSymbolsBool::Contents, JS::Error&> js::frontend::BinASTTokenReaderContext::readFieldFromTable<js::frontend::HuffmanTableIndexedSymbolsBool>(mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) ```
Bug 1581875 Comment 8 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
In the current state, I get the following profile: ``` Weight | Weight% | Self Weight | Symbol ------ | ------- | ----------- | --------- 11.68 s | 6.3% | 11.68 s | mozilla::Result<js::frontend::HuffmanLookup, JS::Error&> js::frontend::BinASTTokenReaderContext::BitBuffer::getHuffmanLookup<(js::frontend::BinASTTokenReaderContext::Compression)0>(js::frontend::BinASTTokenReaderContext&) 10.28 s | 5.6% | 10.28 s | decltype(auto) mozilla::detail::VariantImplementation<unsigned char, 1ul, js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable>::matchN<mozilla::Variant<js::frontend::SingleLookupHuffmanTable<JSAtom*, unsigned char>, js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable> const, js::frontend::GenericHuffmanTable<JSAtom*>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6> const&), js::frontend::GenericHuffmanTable<JSAtom*>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6> const&), js::frontend::GenericHuffmanTable<JSAtom*>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::HuffmanTableUnreachable const&)>(mozilla::Variant<js::frontend::SingleLookupHuffmanTable<JSAtom*, unsigned char>, js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable> const&, js::frontend::GenericHuffmanTable<JSAtom*>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6> const&)&&, js::frontend::GenericHuffmanTable<JSAtom*>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6> const&)&&, js::frontend::GenericHuffmanTable<JSAtom*>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::HuffmanTableUnreachable const&)&&) 8.24 s | 4.5% | 8.24 s | decltype(auto) mozilla::detail::VariantImplementation<unsigned char, 1ul, js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable>::matchN<mozilla::Variant<js::frontend::SingleLookupHuffmanTable<js::frontend::BinASTKind, unsigned char>, js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable> const, js::frontend::GenericHuffmanTable<js::frontend::BinASTKind>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6> const&), js::frontend::GenericHuffmanTable<js::frontend::BinASTKind>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6> const&), js::frontend::GenericHuffmanTable<js::frontend::BinASTKind>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::HuffmanTableUnreachable const&)>(mozilla::Variant<js::frontend::SingleLookupHuffmanTable<js::frontend::BinASTKind, unsigned char>, js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable> const&, js::frontend::GenericHuffmanTable<js::frontend::BinASTKind>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6> const&)&&, js::frontend::GenericHuffmanTable<js::frontend::BinASTKind>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<js::frontend::BinASTKind, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6> const&)&&, js::frontend::GenericHuffmanTable<js::frontend::BinASTKind>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::HuffmanTableUnreachable const&)&&) 7.94 s | 4.3% | 7.94 s | js::frontend::TagReader::operator()(js::frontend::HuffmanTableIndexedSymbolsSum const&) 6.96 s | 3.8% | 6.96 s | js::frontend::MultiLookupHuffmanTable<JSAtom*, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>::lookup(js::frontend::HuffmanLookup) const 6.41 s | 3.5% | 6.41 s | js::frontend::BinASTTokenReaderContext::enterTaggedTuple(js::frontend::BinASTKind&, js::frontend::BinASTTokenReaderContext::BinASTFields&, mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&, js::frontend::BinASTTokenReaderContext::AutoTaggedTuple&) 4.29 s | 2.3% | 4.29 s | js::frontend::FunctionBox::FunctionBox(JSContext*, js::frontend::TraceListNode*, JSFunction*, unsigned int, js::frontend::Directives, bool, js::GeneratorKind, js::FunctionAsyncKind) 3.98 s | 2.1% | 3.98 s | decltype(auto) mozilla::detail::VariantImplementation<unsigned char, 0ul, js::frontend::HuffmanTableUnreachable, js::frontend::HuffmanTableInitializing, js::frontend::HuffmanTableExplicitSymbolsF64, js::frontend::HuffmanTableExplicitSymbolsU32, js::frontend::HuffmanTableIndexedSymbolsSum, js::frontend::HuffmanTableIndexedSymbolsMaybeInterface, js::frontend::HuffmanTableIndexedSymbolsBool, js::frontend::HuffmanTableIndexedSymbolsStringEnum, js::frontend::HuffmanTableIndexedSymbolsLiteralString, js::frontend::HuffmanTableIndexedSymbolsOptionalLiteralString>::match<js::frontend::TagReader, mozilla::Variant<js::frontend::HuffmanTableUnreachable, js::frontend::HuffmanTableInitializing, js::frontend::HuffmanTableExplicitSymbolsF64, js::frontend::HuffmanTableExplicitSymbolsU32, js::frontend::HuffmanTableIndexedSymbolsSum, js::frontend::HuffmanTableIndexedSymbolsMaybeInterface, js::frontend::HuffmanTableIndexedSymbolsBool, js::frontend::HuffmanTableIndexedSymbolsStringEnum, js::frontend::HuffmanTableIndexedSymbolsLiteralString, js::frontend::HuffmanTableIndexedSymbolsOptionalLiteralString> const>(js::frontend::TagReader&&, mozilla::Variant<js::frontend::HuffmanTableUnreachable, js::frontend::HuffmanTableInitializing, js::frontend::HuffmanTableExplicitSymbolsF64, js::frontend::HuffmanTableExplicitSymbolsU32, js::frontend::HuffmanTableIndexedSymbolsSum, js::frontend::HuffmanTableIndexedSymbolsMaybeInterface, js::frontend::HuffmanTableIndexedSymbolsBool, js::frontend::HuffmanTableIndexedSymbolsStringEnum, js::frontend::HuffmanTableIndexedSymbolsLiteralString, js::frontend::HuffmanTableIndexedSymbolsOptionalLiteralString> const&) 3.91 s | 2.1% | 3.91 s | js::frontend::UsedNameTracker::noteUse(JSContext*, JSAtom*, unsigned int, unsigned int) 3.84 s | 2.1% | 3.84 s | mozilla::Result<js::frontend::HuffmanTableIndexedSymbolsLiteralString::Contents, JS::Error&> js::frontend::BinASTTokenReaderContext::readFieldFromTable<js::frontend::HuffmanTableIndexedSymbolsLiteralString>(mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) 3.67 s | 2.0% | 3.67 s | js::frontend::BinASTParser<js::frontend::BinASTTokenReaderContext>::parseInterfaceIdentifierExpression(unsigned long, js::frontend::BinASTKind, js::frontend::BinASTTokenReaderContext::BinASTFields const&, mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) 3.62 s | 1.9% | 3.62 s | js::frontend::BinASTParser<js::frontend::BinASTTokenReaderContext>::parseInterfaceStaticMemberExpression(unsigned long, js::frontend::BinASTKind, js::frontend::BinASTTokenReaderContext::BinASTFields const&, mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) 3.54 s | 1.9% | 3.54 s | bool GetUTF8AtomizationData<JS::WTF8Chars>(JSContext*, JS::WTF8Chars, unsigned long*, JS::SmallestEncoding*, unsigned int*) 3.48 s | 1.9% | 3.48 s | decltype(auto) mozilla::detail::VariantImplementation<unsigned char, 1ul, js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable>::matchN<mozilla::Variant<js::frontend::SingleLookupHuffmanTable<unsigned int, unsigned char>, js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable> const, js::frontend::GenericHuffmanTable<unsigned int>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6> const&), js::frontend::GenericHuffmanTable<unsigned int>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6> const&), js::frontend::GenericHuffmanTable<unsigned int>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::HuffmanTableUnreachable const&)>(mozilla::Variant<js::frontend::SingleLookupHuffmanTable<unsigned int, unsigned char>, js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6>, js::frontend::HuffmanTableUnreachable> const&, js::frontend::GenericHuffmanTable<unsigned int>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6> const&)&&, js::frontend::GenericHuffmanTable<unsigned int>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::MultiLookupHuffmanTable<unsigned int, js::frontend::MultiLookupHuffmanTable<unsigned long, js::frontend::SingleLookupHuffmanTable<unsigned long, unsigned char>, (unsigned char)6>, (unsigned char)6> const&)&&, js::frontend::GenericHuffmanTable<unsigned int>::lookup(js::frontend::HuffmanLookup) const::'lambda'(js::frontend::HuffmanTableUnreachable const&)&&) 3.39 s | 1.8% | 3.39 s | js::frontend::ParseNodeAllocator::allocNode(unsigned long) 2.54 s | 1.3% | 2.54 s | JSAtom* AtomizeUTF8OrWTF8Chars<JS::WTF8Chars>(JSContext*, char const*, unsigned long) 2.41 s | 1.3% | 2.41 s | js::frontend::BinASTTokenReaderContext::enterList(unsigned int&, mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&, js::frontend::BinASTTokenReaderContext::AutoList&) 2.23 s | 1.2% | 2.23 s | js::frontend::BinASTParser<js::frontend::BinASTTokenReaderContext>::parseInterfaceCallExpression(unsigned long, js::frontend::BinASTKind, js::frontend::BinASTTokenReaderContext::BinASTFields const&, mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) 2.10 s | 1.1% | 2.10 s | js::frontend::BinASTParser<js::frontend::BinASTTokenReaderContext>::parseArguments(mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) 2.02 s | 1.1% | 2.02 s | js::frontend::BinASTParser<js::frontend::BinASTTokenReaderContext>::parseInterfaceBinaryExpression(unsigned long, js::frontend::BinASTKind, js::frontend::BinASTTokenReaderContext::BinASTFields const&, mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) 1.96 s | 1.0% | 1.96 s | mozilla::Result<js::frontend::HuffmanTableIndexedSymbolsBool::Contents, JS::Error&> js::frontend::BinASTTokenReaderContext::readFieldFromTable<js::frontend::HuffmanTableIndexedSymbolsBool>(mozilla::Variant<js::frontend::BinASTTokenReaderBase::RootContext, js::frontend::BinASTTokenReaderBase::ListContext, js::frontend::BinASTTokenReaderBase::FieldContext> const&) ``` Decoding a bit, the worst offenders are: - 6.3% fetching bits from the bit stream (should be faster once we merge with bug 1581052); - 5.6% Huffman lookup for strings (all); - 4.5% Huffman lookup for tagged tuples; - 4.3% treating tagged tuples(?); - 3.8% Huffman lookup for strings (very large tables); - 3.5% entering tagged tuples. So, next steps should probably be to work on: - improving bit stream (bug 1581052); - making lookup faster for small tables (tagged tuples); - making lookup faster for large tables (strings).