tickprocessor.js revision 3ef787dbeca8a5fb1086949cda830dccee07bfbd
1a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Copyright 2009 the V8 project authors. All rights reserved. 2a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Redistribution and use in source and binary forms, with or without 3a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// modification, are permitted provided that the following conditions are 4a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// met: 5a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// 6a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// * Redistributions of source code must retain the above copyright 7a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// notice, this list of conditions and the following disclaimer. 8a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// * Redistributions in binary form must reproduce the above 9a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// copyright notice, this list of conditions and the following 10a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// disclaimer in the documentation and/or other materials provided 11a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// with the distribution. 12a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// * Neither the name of Google Inc. nor the names of its 13a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// contributors may be used to endorse or promote products derived 14a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// from this software without specific prior written permission. 15a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// 16a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 28a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Load implementations from <project root>/tools. 29a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Files: tools/splaytree.js tools/codemap.js tools/csvparser.js 30a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Files: tools/consarray.js tools/profile.js tools/profile_view.js 31a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Files: tools/logreader.js tools/tickprocessor.js 32a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Env: TEST_FILE_NAME 33a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 34a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 35a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block(function testArgumentsProcessor() { 36a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var p_default = new ArgumentsProcessor([]); 37a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertTrue(p_default.parse()); 38a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals(ArgumentsProcessor.DEFAULTS, p_default.result()); 39a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 40a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var p_logFile = new ArgumentsProcessor(['logfile.log']); 41a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertTrue(p_logFile.parse()); 42a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals('logfile.log', p_logFile.result().logFileName); 43a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 44a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var p_platformAndLog = new ArgumentsProcessor(['--windows', 'winlog.log']); 45a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertTrue(p_platformAndLog.parse()); 46a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals('windows', p_platformAndLog.result().platform); 47a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals('winlog.log', p_platformAndLog.result().logFileName); 48a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 49a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var p_flags = new ArgumentsProcessor(['--gc', '--separate-ic']); 50a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertTrue(p_flags.parse()); 51a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals(TickProcessor.VmStates.GC, p_flags.result().stateFilter); 52a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertTrue(p_flags.result().separateIc); 53a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 54a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var p_nmAndLog = new ArgumentsProcessor(['--nm=mn', 'nmlog.log']); 55a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertTrue(p_nmAndLog.parse()); 56a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals('mn', p_nmAndLog.result().nm); 57a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals('nmlog.log', p_nmAndLog.result().logFileName); 58a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 59a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var p_bad = new ArgumentsProcessor(['--unknown', 'badlog.log']); 60a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertFalse(p_bad.parse()); 61a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block})(); 62a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 63a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 64a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block(function testUnixCppEntriesProvider() { 65a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var oldLoadSymbols = UnixCppEntriesProvider.prototype.loadSymbols; 66a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 67a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // shell executable 68a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block UnixCppEntriesProvider.prototype.loadSymbols = function(libName) { 69a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block this.symbols = [[ 70a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' U operator delete[](void*)@@GLIBCXX_3.4', 71a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '08049790 T _init', 72a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '08049f50 T _start', 73a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '08139150 00000b4b t v8::internal::Runtime_StringReplaceRegExpWithString(v8::internal::Arguments)', 74a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '08139ca0 000003f1 T v8::internal::Runtime::GetElementOrCharAt(v8::internal::Handle<v8::internal::Object>, unsigned int)', 75a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '0813a0b0 00000855 t v8::internal::Runtime_DebugGetPropertyDetails(v8::internal::Arguments)', 76a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '0818b220 00000036 W v8::internal::RegExpMacroAssembler::CheckPosition(int, v8::internal::Label*)', 77a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' w __gmon_start__', 78a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '081f08a0 00000004 B stdout\n' 79a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ].join('\n'), '']; 80a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }; 81a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 82a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var shell_prov = new UnixCppEntriesProvider(); 83a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var shell_syms = []; 84a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block shell_prov.parseVmSymbols('shell', 0x08048000, 0x081ee000, 85a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block function (name, start, end) { 86a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block shell_syms.push(Array.prototype.slice.apply(arguments, [0])); 87a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }); 88a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals( 89a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block [['_init', 0x08049790, 0x08049f50], 90a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['_start', 0x08049f50, 0x08139150], 91a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['v8::internal::Runtime_StringReplaceRegExpWithString(v8::internal::Arguments)', 0x08139150, 0x08139150 + 0xb4b], 92a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['v8::internal::Runtime::GetElementOrCharAt(v8::internal::Handle<v8::internal::Object>, unsigned int)', 0x08139ca0, 0x08139ca0 + 0x3f1], 93a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['v8::internal::Runtime_DebugGetPropertyDetails(v8::internal::Arguments)', 0x0813a0b0, 0x0813a0b0 + 0x855], 94a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['v8::internal::RegExpMacroAssembler::CheckPosition(int, v8::internal::Label*)', 0x0818b220, 0x0818b220 + 0x36]], 95a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block shell_syms); 96a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 97a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // libc library 98a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block UnixCppEntriesProvider.prototype.loadSymbols = function(libName) { 99a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block this.symbols = [[ 100a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '000162a0 00000005 T __libc_init_first', 101a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '0002a5f0 0000002d T __isnan', 102a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '0002a5f0 0000002d W isnan', 103a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '0002aaa0 0000000d W scalblnf', 104a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '0002aaa0 0000000d W scalbnf', 105a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '0011a340 00000048 T __libc_thread_freeres', 106a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '00128860 00000024 R _itoa_lower_digits\n'].join('\n'), '']; 107a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }; 108a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var libc_prov = new UnixCppEntriesProvider(); 109a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var libc_syms = []; 110a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block libc_prov.parseVmSymbols('libc', 0xf7c5c000, 0xf7da5000, 111a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block function (name, start, end) { 112a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block libc_syms.push(Array.prototype.slice.apply(arguments, [0])); 113a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }); 114a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var libc_ref_syms = [['__libc_init_first', 0x000162a0, 0x000162a0 + 0x5], 115a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['__isnan', 0x0002a5f0, 0x0002a5f0 + 0x2d], 116a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['scalblnf', 0x0002aaa0, 0x0002aaa0 + 0xd], 117a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['__libc_thread_freeres', 0x0011a340, 0x0011a340 + 0x48]]; 118a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block for (var i = 0; i < libc_ref_syms.length; ++i) { 119a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block libc_ref_syms[i][1] += 0xf7c5c000; 120a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block libc_ref_syms[i][2] += 0xf7c5c000; 121a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 122a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals(libc_ref_syms, libc_syms); 123a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 124a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block UnixCppEntriesProvider.prototype.loadSymbols = oldLoadSymbols; 125a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block})(); 126a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 127a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 128a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block(function testMacCppEntriesProvider() { 129a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var oldLoadSymbols = MacCppEntriesProvider.prototype.loadSymbols; 130a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 131a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // shell executable 132a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block MacCppEntriesProvider.prototype.loadSymbols = function(libName) { 133a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block this.symbols = [[ 134a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' U operator delete[]', 135a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '00001000 A __mh_execute_header', 136a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '00001b00 T start', 137a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '00001b40 t dyld_stub_binding_helper', 138a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '0011b710 T v8::internal::RegExpMacroAssembler::CheckPosition', 139a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '00134250 t v8::internal::Runtime_StringReplaceRegExpWithString', 140a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '00137220 T v8::internal::Runtime::GetElementOrCharAt', 141a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '00137400 t v8::internal::Runtime_DebugGetPropertyDetails', 142a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '001c1a80 b _private_mem\n' 143a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ].join('\n'), '']; 144a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }; 145a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 146a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var shell_prov = new MacCppEntriesProvider(); 147a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var shell_syms = []; 148a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block shell_prov.parseVmSymbols('shell', 0x00001b00, 0x00163156, 149a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block function (name, start, end) { 150a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block shell_syms.push(Array.prototype.slice.apply(arguments, [0])); 151a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }); 152a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals( 153a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block [['start', 0x00001b00, 0x00001b40], 154a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['dyld_stub_binding_helper', 0x00001b40, 0x0011b710], 155a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['v8::internal::RegExpMacroAssembler::CheckPosition', 0x0011b710, 0x00134250], 156a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['v8::internal::Runtime_StringReplaceRegExpWithString', 0x00134250, 0x00137220], 157a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['v8::internal::Runtime::GetElementOrCharAt', 0x00137220, 0x00137400], 158a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['v8::internal::Runtime_DebugGetPropertyDetails', 0x00137400, 0x00163156]], 159a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block shell_syms); 160a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 161a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // stdc++ library 162a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block MacCppEntriesProvider.prototype.loadSymbols = function(libName) { 163a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block this.symbols = [[ 164a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '0000107a T __gnu_cxx::balloc::__mini_vector<std::pair<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*, __gnu_cxx::bitmap_allocator<char>::_Alloc_block*> >::__mini_vector', 165a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '0002c410 T std::basic_streambuf<char, std::char_traits<char> >::pubseekoff', 166a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '0002c488 T std::basic_streambuf<char, std::char_traits<char> >::pubseekpos', 167a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '000466aa T ___cxa_pure_virtual\n'].join('\n'), '']; 168a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }; 169a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var stdc_prov = new MacCppEntriesProvider(); 170a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var stdc_syms = []; 171a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block stdc_prov.parseVmSymbols('stdc++', 0x95728fb4, 0x95770005, 172a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block function (name, start, end) { 173a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block stdc_syms.push(Array.prototype.slice.apply(arguments, [0])); 174a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }); 175a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var stdc_ref_syms = [['__gnu_cxx::balloc::__mini_vector<std::pair<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*, __gnu_cxx::bitmap_allocator<char>::_Alloc_block*> >::__mini_vector', 0x0000107a, 0x0002c410], 176a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['std::basic_streambuf<char, std::char_traits<char> >::pubseekoff', 0x0002c410, 0x0002c488], 177a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['std::basic_streambuf<char, std::char_traits<char> >::pubseekpos', 0x0002c488, 0x000466aa], 178a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['___cxa_pure_virtual', 0x000466aa, 0x95770005 - 0x95728fb4]]; 179a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block for (var i = 0; i < stdc_ref_syms.length; ++i) { 180a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block stdc_ref_syms[i][1] += 0x95728fb4; 181a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block stdc_ref_syms[i][2] += 0x95728fb4; 182a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 183a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals(stdc_ref_syms, stdc_syms); 184a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 185a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block MacCppEntriesProvider.prototype.loadSymbols = oldLoadSymbols; 186a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block})(); 187a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 188a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 189a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block(function testWindowsCppEntriesProvider() { 190a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var oldLoadSymbols = WindowsCppEntriesProvider.prototype.loadSymbols; 191a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 192a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block WindowsCppEntriesProvider.prototype.loadSymbols = function(libName) { 193a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block this.symbols = [ 194a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' Start Length Name Class', 195a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:00000000 000ac902H .text CODE', 196a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:000ac910 000005e2H .text$yc CODE', 197a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' Address Publics by Value Rva+Base Lib:Object', 198a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0000:00000000 __except_list 00000000 <absolute>', 199a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:00000000 ?ReadFile@@YA?AV?$Handle@VString@v8@@@v8@@PBD@Z 00401000 f shell.obj', 200a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:000000a0 ?Print@@YA?AV?$Handle@VValue@v8@@@v8@@ABVArguments@2@@Z 004010a0 f shell.obj', 201a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:00001230 ??1UTF8Buffer@internal@v8@@QAE@XZ 00402230 f v8_snapshot:scanner.obj', 202a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:00001230 ??1Utf8Value@String@v8@@QAE@XZ 00402230 f v8_snapshot:api.obj', 203a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:000954ba __fclose_nolock 004964ba f LIBCMT:fclose.obj', 204a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0002:00000000 __imp__SetThreadPriority@8 004af000 kernel32:KERNEL32.dll', 205a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0003:00000418 ?in_use_list_@PreallocatedStorage@internal@v8@@0V123@A 00544418 v8_snapshot:allocation.obj', 206a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' Static symbols', 207a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:00000b70 ?DefaultFatalErrorHandler@v8@@YAXPBD0@Z 00401b70 f v8_snapshot:api.obj', 208a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:000010b0 ?EnsureInitialized@v8@@YAXPBD@Z 004020b0 f v8_snapshot:api.obj', 209a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:000ad17b ??__Fnomem@?5???2@YAPAXI@Z@YAXXZ 004ae17b f LIBCMT:new.obj' 210a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ].join('\r\n'); 211a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }; 212a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var shell_prov = new WindowsCppEntriesProvider(); 213a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var shell_syms = []; 214a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block shell_prov.parseVmSymbols('shell.exe', 0x00400000, 0x0057c000, 215a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block function (name, start, end) { 216a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block shell_syms.push(Array.prototype.slice.apply(arguments, [0])); 217a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }); 218a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals( 219a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block [['ReadFile', 0x00401000, 0x004010a0], 220a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['Print', 0x004010a0, 0x00402230], 221a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['v8::String::?1Utf8Value', 0x00402230, 0x004964ba], 222a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['v8::DefaultFatalErrorHandler', 0x00401b70, 0x004020b0], 223a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['v8::EnsureInitialized', 0x004020b0, 0x0057c000]], 224a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block shell_syms); 225a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 226a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block WindowsCppEntriesProvider.prototype.loadSymbols = oldLoadSymbols; 227a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block})(); 228a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 229a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 230a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// http://code.google.com/p/v8/issues/detail?id=427 231a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block(function testWindowsProcessExeAndDllMapFile() { 232a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block function exeSymbols(exeName) { 233a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block return [ 234a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0000:00000000 ___ImageBase 00400000 <linker-defined>', 235a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:00000780 ?RunMain@@YAHHQAPAD@Z 00401780 f shell.obj', 236a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:00000ac0 _main 00401ac0 f shell.obj', 237a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '' 238a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ].join('\r\n'); 239a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 240a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 241a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block function dllSymbols(dllName) { 242a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block return [ 243a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0000:00000000 ___ImageBase 01c30000 <linker-defined>', 244a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:00000780 _DllMain@12 01c31780 f libcmt:dllmain.obj', 245a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ' 0001:00000ac0 ___DllMainCRTStartup 01c31ac0 f libcmt:dllcrt0.obj', 246a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '' 247a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ].join('\r\n'); 248a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 249a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 250a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var oldRead = read; 251a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 252a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block read = exeSymbols; 253a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var exe_exe_syms = []; 254a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block (new WindowsCppEntriesProvider()).parseVmSymbols( 255a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 'chrome.exe', 0x00400000, 0x00472000, 256a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block function (name, start, end) { 257a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block exe_exe_syms.push(Array.prototype.slice.apply(arguments, [0])); 258a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }); 259a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals( 260a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block [['RunMain', 0x00401780, 0x00401ac0], 261a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['_main', 0x00401ac0, 0x00472000]], 262a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block exe_exe_syms, '.exe with .exe symbols'); 263a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 264a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block read = dllSymbols; 265a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var exe_dll_syms = []; 266a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block (new WindowsCppEntriesProvider()).parseVmSymbols( 267a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 'chrome.exe', 0x00400000, 0x00472000, 268a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block function (name, start, end) { 269a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block exe_dll_syms.push(Array.prototype.slice.apply(arguments, [0])); 270a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }); 271a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals( 272a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block [], 273a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block exe_dll_syms, '.exe with .dll symbols'); 274a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 275a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block read = dllSymbols; 276a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var dll_dll_syms = []; 277a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block (new WindowsCppEntriesProvider()).parseVmSymbols( 278a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 'chrome.dll', 0x01c30000, 0x02b80000, 279a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block function (name, start, end) { 280a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block dll_dll_syms.push(Array.prototype.slice.apply(arguments, [0])); 281a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }); 282a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals( 283a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block [['_DllMain@12', 0x01c31780, 0x01c31ac0], 284a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['___DllMainCRTStartup', 0x01c31ac0, 0x02b80000]], 285a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block dll_dll_syms, '.dll with .dll symbols'); 286a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 287a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block read = exeSymbols; 288a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var dll_exe_syms = []; 289a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block (new WindowsCppEntriesProvider()).parseVmSymbols( 290a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 'chrome.dll', 0x01c30000, 0x02b80000, 291a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block function (name, start, end) { 292a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block dll_exe_syms.push(Array.prototype.slice.apply(arguments, [0])); 293a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }); 294a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals( 295a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block [], 296a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block dll_exe_syms, '.dll with .exe symbols'); 297a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 298a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block read = oldRead; 299a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block})(); 300a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 301a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 302a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockfunction CppEntriesProviderMock() { 303a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block}; 304a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 305a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 306a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockCppEntriesProviderMock.prototype.parseVmSymbols = function( 307a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block name, startAddr, endAddr, symbolAdder) { 308a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var symbols = { 309a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 'shell': 310a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block [['v8::internal::JSObject::LocalLookupRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*)', 0x080f8800, 0x080f8d90], 311a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['v8::internal::HashTable<v8::internal::StringDictionaryShape, v8::internal::String*>::FindEntry(v8::internal::String*)', 0x080f8210, 0x080f8800], 312a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['v8::internal::Runtime_Math_exp(v8::internal::Arguments)', 0x08123b20, 0x08123b80]], 313a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block '/lib32/libm-2.7.so': 314a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block [['exp', startAddr + 0x00009e80, startAddr + 0x00009e80 + 0xa3], 315a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block ['fegetexcept', startAddr + 0x000061e0, startAddr + 0x000061e0 + 0x15]], 316a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 'ffffe000-fffff000': []}; 317a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertTrue(name in symbols); 318a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var syms = symbols[name]; 319a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block for (var i = 0; i < syms.length; ++i) { 320a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block symbolAdder.apply(null, syms[i]); 321a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 322a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block}; 323a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 324a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 325a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockfunction PrintMonitor(outputOrFileName) { 326a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var expectedOut = typeof outputOrFileName == 'string' ? 327a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block this.loadExpectedOutput(outputOrFileName) : outputOrFileName; 328a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var outputPos = 0; 329a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var diffs = this.diffs = []; 330a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var realOut = this.realOut = []; 331a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var unexpectedOut = this.unexpectedOut = null; 332a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 333a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block this.oldPrint = print; 334a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block print = function(str) { 335a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var strSplit = str.split('\n'); 336a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block for (var i = 0; i < strSplit.length; ++i) { 337d91b9f7d46489a9ee00f9cb415630299c76a502bLeon Clarke var s = strSplit[i]; 338a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block realOut.push(s); 339a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block if (outputPos < expectedOut.length) { 340a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block if (expectedOut[outputPos] != s) { 341a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block diffs.push('line ' + outputPos + ': expected <' + 342a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block expectedOut[outputPos] + '> found <' + s + '>\n'); 343a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 344a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block outputPos++; 345a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } else { 346a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block unexpectedOut = true; 347a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 348a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 349a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }; 350a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block}; 351a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 352a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 353a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockPrintMonitor.prototype.loadExpectedOutput = function(fileName) { 354a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var output = readFile(fileName); 355a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block return output.split('\n'); 356a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block}; 357a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 358a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 359a7e24c173cf37484693b9abb38e494fa7bd7baebSteve BlockPrintMonitor.prototype.finish = function() { 360a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block print = this.oldPrint; 361a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block if (this.diffs.length > 0 || this.unexpectedOut != null) { 362a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block print(this.realOut.join('\n')); 363a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals([], this.diffs); 364a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertNull(this.unexpectedOut); 365a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 366a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block}; 367a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 368a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 369a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockfunction driveTickProcessorTest( 370a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block separateIc, ignoreUnknown, stateFilter, logInput, refOutput) { 371a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // TEST_FILE_NAME must be provided by test runner. 372a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertEquals('string', typeof TEST_FILE_NAME); 373a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var pathLen = TEST_FILE_NAME.lastIndexOf('/'); 374a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block if (pathLen == -1) { 375a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block pathLen = TEST_FILE_NAME.lastIndexOf('\\'); 376a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 377a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block assertTrue(pathLen != -1); 378a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var testsPath = TEST_FILE_NAME.substr(0, pathLen + 1); 3793ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch var tp = new TickProcessor(new CppEntriesProviderMock(), 3803ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch separateIc, 3813ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch TickProcessor.CALL_GRAPH_SIZE, 3823ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch ignoreUnknown, 3833ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch stateFilter); 384a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var pm = new PrintMonitor(testsPath + refOutput); 3853100271588b61cbc1dc472a3f2f105d2eed8497fAndrei Popescu tp.processLogFileInTest(testsPath + logInput); 386a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block tp.printStatistics(); 387a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block pm.finish(); 388a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block}; 389a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 390a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 391a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block(function testProcessing() { 392a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block var testData = { 393a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 'Default': [ 394a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block false, false, null, 395a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 'tickprocessor-test.log', 'tickprocessor-test.default'], 396a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 'SeparateIc': [ 397a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block true, false, null, 398a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 'tickprocessor-test.log', 'tickprocessor-test.separate-ic'], 399a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 'IgnoreUnknown': [ 400a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block false, true, null, 401a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 'tickprocessor-test.log', 'tickprocessor-test.ignore-unknown'], 402a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 'GcState': [ 403a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block false, false, TickProcessor.VmStates.GC, 404d91b9f7d46489a9ee00f9cb415630299c76a502bLeon Clarke 'tickprocessor-test.log', 'tickprocessor-test.gc-state'], 405d91b9f7d46489a9ee00f9cb415630299c76a502bLeon Clarke 'FunctionInfo': [ 406d91b9f7d46489a9ee00f9cb415630299c76a502bLeon Clarke false, false, null, 407d91b9f7d46489a9ee00f9cb415630299c76a502bLeon Clarke 'tickprocessor-test-func-info.log', 'tickprocessor-test.func-info'] 408a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }; 409a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block for (var testName in testData) { 410a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block print('=== testProcessing-' + testName + ' ==='); 411a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block driveTickProcessorTest.apply(null, testData[testName]); 412a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 413a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block})(); 414