Changeset 39182 in webkit for trunk/JavaScriptCore/bytecode/CodeBlock.cpp
- Timestamp:
- Dec 10, 2008, 12:05:53 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/bytecode/CodeBlock.cpp
r39157 r39182 972 972 macro(expressionInfo) \ 973 973 macro(lineInfo) \ 974 macro(pcVector) 974 975 975 976 #define FOR_EACH_MEMBER_VECTOR_RARE_DATA(macro) \ … … 982 983 macro(stringSwitchJumpTables) 983 984 985 template<typename T> 986 static size_t sizeInBytes(const Vector<T>& vector) 987 { 988 return vector.capacity() * sizeof(T); 989 } 990 984 991 void CodeBlock::dumpStatistics() 985 992 { 986 993 #if DUMP_CODE_BLOCK_STATISTICS 987 988 #define DEFINE_VARS(name) size_t name##IsNotEmpty = 0; 994 #define DEFINE_VARS(name) size_t name##IsNotEmpty = 0; size_t name##TotalSize = 0; 989 995 FOR_EACH_MEMBER_VECTOR(DEFINE_VARS) 990 996 FOR_EACH_MEMBER_VECTOR_RARE_DATA(DEFINE_VARS) … … 992 998 993 999 // Non-vector data members 994 size_t jitReturnAddressVPCMapIsNotEmpty = 0;995 1000 size_t evalCodeCacheIsNotEmpty = 0; 1001 996 1002 size_t symbolTableIsNotEmpty = 0; 1003 size_t symbolTableTotalSize = 0; 997 1004 998 1005 size_t hasRareData = 0; 999 1000 size_t symbolTableTotalSize = 0;1001 1006 1002 1007 HashSet<CodeBlock*>::const_iterator end = liveCodeBlockSet.end(); … … 1004 1009 CodeBlock* codeBlock = *it; 1005 1010 1006 #define GET_STATS(name) if (!codeBlock->m_##name.isEmpty()) { name##IsNotEmpty++; }1011 #define GET_STATS(name) if (!codeBlock->m_##name.isEmpty()) { name##IsNotEmpty++; name##TotalSize += sizeInBytes(codeBlock->m_##name); } 1007 1012 FOR_EACH_MEMBER_VECTOR(GET_STATS) 1008 1013 #undef GET_STATS 1009 1010 if (!codeBlock->m_jitReturnAddressVPCMap.isEmpty())1011 jitReturnAddressVPCMapIsNotEmpty++;1012 1014 1013 1015 if (!codeBlock->m_symbolTable.isEmpty()) { … … 1018 1020 if (codeBlock->m_rareData) { 1019 1021 hasRareData++; 1020 #define GET_STATS(name) if (!codeBlock->m_rareData->m_##name.isEmpty()) { name##IsNotEmpty++; }1022 #define GET_STATS(name) if (!codeBlock->m_rareData->m_##name.isEmpty()) { name##IsNotEmpty++; name##TotalSize += sizeInBytes(codeBlock->m_rareData->m_##name); } 1021 1023 FOR_EACH_MEMBER_VECTOR_RARE_DATA(GET_STATS) 1022 1024 #undef GET_STATS … … 1032 1034 printf("Number of CodeBlocks with rare data: %zu\n", hasRareData); 1033 1035 1034 #define PRINT_STATS(name) printf("Number of CodeBlocks with " #name ": %zu\n", name##IsNotEmpty); 1036 #define PRINT_STATS(name) printf("Number of CodeBlocks with " #name ": %zu\n", name##IsNotEmpty); printf("Size of all " #name ": %zu\n", name##TotalSize); 1035 1037 FOR_EACH_MEMBER_VECTOR(PRINT_STATS) 1036 1038 FOR_EACH_MEMBER_VECTOR_RARE_DATA(PRINT_STATS) 1037 1039 #undef PRINT_STATS 1038 1040 1039 printf("Number of CodeBlocks with jitReturnAddressVPCMap: %zu\n", jitReturnAddressVPCMapIsNotEmpty);1040 1041 printf("Number of CodeBlocks with evalCodeCache: %zu\n", evalCodeCacheIsNotEmpty); 1041 1042 printf("Number of CodeBlocks with symbolTable: %zu\n", symbolTableIsNotEmpty);
Note:
See TracChangeset
for help on using the changeset viewer.