diff --git a/src/api.cc b/src/api.cc index 8eca750f2687..69bcf7d756ab 100644 --- a/src/api.cc +++ b/src/api.cc @@ -559,10 +559,6 @@ StartupData SnapshotCreator::CreateBlob( } data->contexts_.Clear(); -#ifdef DEBUG - i::ExternalReferenceTable::instance(isolate)->ResetCount(); -#endif // DEBUG - i::StartupSerializer startup_serializer(isolate, function_code_handling); startup_serializer.SerializeStrongReferences(); @@ -576,13 +572,6 @@ StartupData SnapshotCreator::CreateBlob( } startup_serializer.SerializeWeakReferencesAndDeferred(); - -#ifdef DEBUG - if (i::FLAG_external_reference_stats) { - i::ExternalReferenceTable::instance(isolate)->PrintCount(); - } -#endif // DEBUG - i::SnapshotData startup_snapshot(&startup_serializer); StartupData result = i::Snapshot::CreateSnapshotBlob(&startup_snapshot, &context_snapshots); diff --git a/src/external-reference-table.cc b/src/external-reference-table.cc index 7ad5e43aa8bf..aa61117c9739 100644 --- a/src/external-reference-table.cc +++ b/src/external-reference-table.cc @@ -11,11 +11,6 @@ #include "src/deoptimizer.h" #include "src/ic/stub-cache.h" -#if defined(DEBUG) && defined(V8_OS_LINUX) && !defined(V8_OS_ANDROID) -#define SYMBOLIZE_FUNCTION -#include -#endif // DEBUG && V8_OS_LINUX && !V8_OS_ANDROID - namespace v8 { namespace internal { @@ -48,28 +43,6 @@ ExternalReferenceTable::ExternalReferenceTable(Isolate* isolate) { AddApiReferences(isolate); } -#ifdef DEBUG -void ExternalReferenceTable::ResetCount() { - for (ExternalReferenceEntry& entry : refs_) entry.count = 0; -} - -void ExternalReferenceTable::PrintCount() { - for (int i = 0; i < refs_.length(); i++) { - v8::base::OS::Print("index=%5d count=%5d %-60s\n", i, refs_[i].count, - refs_[i].name); - } -} -#endif // DEBUG - -// static -const char* ExternalReferenceTable::ResolveSymbol(void* address) { -#ifdef SYMBOLIZE_FUNCTION - return backtrace_symbols(&address, 1)[0]; -#else - return ""; -#endif // SYMBOLIZE_FUNCTION -} - void ExternalReferenceTable::AddReferences(Isolate* isolate) { // Miscellaneous Add(ExternalReference::roots_array_start(isolate).address(), @@ -363,24 +336,22 @@ void ExternalReferenceTable::AddAccessors(Isolate* isolate) { }; static const AccessorRefTable getters[] = { -#define ACCESSOR_INFO_DECLARATION(name) \ - { FUNCTION_ADDR(&Accessors::name##Getter), \ - "Redirect to Accessors::" #name "Getter"}, - ACCESSOR_INFO_LIST(ACCESSOR_INFO_DECLARATION) +#define ACCESSOR_INFO_DECLARATION(name) \ + {FUNCTION_ADDR(&Accessors::name##Getter), "Accessors::" #name "Getter"}, + ACCESSOR_INFO_LIST(ACCESSOR_INFO_DECLARATION) #undef ACCESSOR_INFO_DECLARATION }; static const AccessorRefTable setters[] = { #define ACCESSOR_SETTER_DECLARATION(name) \ - { FUNCTION_ADDR(&Accessors::name), "Accessors::" #name}, - ACCESSOR_SETTER_LIST(ACCESSOR_SETTER_DECLARATION) + {FUNCTION_ADDR(&Accessors::name), "Accessors::" #name}, + ACCESSOR_SETTER_LIST(ACCESSOR_SETTER_DECLARATION) #undef ACCESSOR_INFO_DECLARATION }; for (unsigned i = 0; i < arraysize(getters); ++i) { - const char* name = getters[i].name + 12; // Skip "Redirect to " prefix. - Add(getters[i].address, name); + Add(getters[i].address, getters[i].name); Add(AccessorInfo::redirect(isolate, getters[i].address, ACCESSOR_GETTER), - getters[i].name); + ""); } for (unsigned i = 0; i < arraysize(setters); ++i) { @@ -441,8 +412,7 @@ void ExternalReferenceTable::AddApiReferences(Isolate* isolate) { intptr_t* api_external_references = isolate->api_external_references(); if (api_external_references != nullptr) { while (*api_external_references != 0) { - Address address = reinterpret_cast
(*api_external_references); - Add(address, ResolveSymbol(address)); + Add(reinterpret_cast
(*api_external_references), ""); api_external_references++; } } diff --git a/src/external-reference-table.h b/src/external-reference-table.h index 39910c0db8ad..fb671a86307d 100644 --- a/src/external-reference-table.h +++ b/src/external-reference-table.h @@ -23,24 +23,12 @@ class ExternalReferenceTable { Address address(uint32_t i) { return refs_[i].address; } const char* name(uint32_t i) { return refs_[i].name; } -#ifdef DEBUG - void increment_count(uint32_t i) { refs_[i].count++; } - int count(uint32_t i) { return refs_[i].count; } - void ResetCount(); - void PrintCount(); -#endif // DEBUG - - static const char* ResolveSymbol(void* address); - static const int kDeoptTableSerializeEntryCount = 64; private: struct ExternalReferenceEntry { Address address; const char* name; -#ifdef DEBUG - int count; -#endif // DEBUG }; explicit ExternalReferenceTable(Isolate* isolate); diff --git a/src/flag-definitions.h b/src/flag-definitions.h index fedcaa597842..cf63f3380281 100644 --- a/src/flag-definitions.h +++ b/src/flag-definitions.h @@ -627,10 +627,6 @@ DEFINE_BOOL(serialize_toplevel, true, "enable caching of toplevel scripts") DEFINE_BOOL(serialize_eager, false, "compile eagerly when caching scripts") DEFINE_BOOL(serialize_age_code, false, "pre age code in the code cache") DEFINE_BOOL(trace_serializer, false, "print code serializer trace") -#ifdef DEBUG -DEFINE_BOOL(external_reference_stats, false, - "print statistics on external references used during serialization") -#endif // DEBUG // compiler.cc DEFINE_INT(min_preparse_length, 1024, diff --git a/src/snapshot/serializer-common.cc b/src/snapshot/serializer-common.cc index f18879341931..d42c3061e6f5 100644 --- a/src/snapshot/serializer-common.cc +++ b/src/snapshot/serializer-common.cc @@ -8,21 +8,25 @@ #include "src/ic/stub-cache.h" #include "src/list-inl.h" +#if defined(DEBUG) && defined(V8_OS_LINUX) && !defined(V8_OS_ANDROID) +#define SYMBOLIZE_FUNCTION +#include +#endif // DEBUG && V8_OS_LINUX && !V8_OS_ANDROID + namespace v8 { namespace internal { ExternalReferenceEncoder::ExternalReferenceEncoder(Isolate* isolate) { map_ = isolate->external_reference_map(); -#ifdef DEBUG - table_ = ExternalReferenceTable::instance(isolate); -#endif // DEBUG if (map_ != nullptr) return; map_ = new AddressToIndexHashMap(); ExternalReferenceTable* table = ExternalReferenceTable::instance(isolate); for (uint32_t i = 0; i < table->size(); ++i) { Address addr = table->address(i); - DCHECK(map_->Get(addr).IsNothing() || - strncmp(table->name(i), "Redirect to ", 12) == 0); + // We expect no duplicate external references entries in the table. + // AccessorRefTable getter may have duplicates, indicated by an empty string + // as name. + DCHECK(table->name(i)[0] == '\0' || map_->Get(addr).IsNothing()); map_->Set(addr, i); DCHECK(map_->Get(addr).IsJust()); } @@ -32,14 +36,13 @@ ExternalReferenceEncoder::ExternalReferenceEncoder(Isolate* isolate) { uint32_t ExternalReferenceEncoder::Encode(Address address) const { Maybe maybe_index = map_->Get(address); if (maybe_index.IsNothing()) { - void* addr = address; - v8::base::OS::PrintError("Unknown external reference %p.\n", addr); - v8::base::OS::PrintError("%s", ExternalReferenceTable::ResolveSymbol(addr)); + void* function_addr = address; + v8::base::OS::PrintError("Unknown external reference %p.\n", function_addr); +#ifdef SYMBOLIZE_FUNCTION + v8::base::OS::PrintError("%s\n", backtrace_symbols(&function_addr, 1)[0]); +#endif // SYMBOLIZE_FUNCTION v8::base::OS::Abort(); } -#ifdef DEBUG - table_->increment_count(maybe_index.FromJust()); -#endif // DEBUG return maybe_index.FromJust(); } diff --git a/src/snapshot/serializer-common.h b/src/snapshot/serializer-common.h index 201ac4e03928..44a9fbf15b34 100644 --- a/src/snapshot/serializer-common.h +++ b/src/snapshot/serializer-common.h @@ -24,9 +24,6 @@ class ExternalReferenceEncoder { private: AddressToIndexHashMap* map_; -#ifdef DEBUG - ExternalReferenceTable* table_; -#endif // DEBUG DISALLOW_COPY_AND_ASSIGN(ExternalReferenceEncoder); };