diff options
Diffstat (limited to 'deps/v8/tools/ignition/linux_perf_bytecode_annotate_test.py')
-rw-r--r-- | deps/v8/tools/ignition/linux_perf_bytecode_annotate_test.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/deps/v8/tools/ignition/linux_perf_bytecode_annotate_test.py b/deps/v8/tools/ignition/linux_perf_bytecode_annotate_test.py new file mode 100644 index 0000000000..15abbeda08 --- /dev/null +++ b/deps/v8/tools/ignition/linux_perf_bytecode_annotate_test.py @@ -0,0 +1,85 @@ +# Copyright 2016 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import StringIO +import unittest +import linux_perf_bytecode_annotate as bytecode_annotate + + +PERF_SCRIPT_OUTPUT = """ +# This line is a comment +# This should be ignored too +# +# cdefab01 aRandomSymbol::Name(to, be, ignored) + + 00000000 firstSymbol + 00000123 secondSymbol + + 01234567 foo + abcdef76 BytecodeHandler:bar+0x12 + 76543210 baz + abcdef76 BytecodeHandler:bar+0x16 + 76543210 baz + + 01234567 foo + abcdef76 BytecodeHandler:foo+0x1 + 76543210 baz + abcdef76 BytecodeHandler:bar+0x2 + 76543210 bar + + abcdef76 BytecodeHandler:bar+0x19 + + abcdef76 BytecodeHandler:bar+0x12 + + abcdef76 BytecodeHandler:bar+0x12 +""" + + +D8_CODEGEN_OUTPUT = """ +kind = BYTECODE_HANDLER +name = foo +compiler = turbofan +Instructions (size = 3) +0x3101394a3c0 0 55 push rbp +0x3101394a3c1 1 ffe3 jmp rbx + +kind = BYTECODE_HANDLER +name = bar +compiler = turbofan +Instructions (size = 5) +0x3101394b3c0 0 55 push rbp +0x3101394b3c1 1 4883c428 REX.W addq rsp,0x28 +# Unexpected comment +0x3101394b3c5 5 ffe3 jmp rbx + +kind = BYTECODE_HANDLER +name = baz +compiler = turbofan +Instructions (size = 5) +0x3101394c3c0 0 55 push rbp +0x3101394c3c1 1 4883c428 REX.W addq rsp,0x28 +0x3101394c3c5 5 ffe3 jmp rbx +""" + + +class LinuxPerfBytecodeAnnotateTest(unittest.TestCase): + + def test_bytecode_offset_generator(self): + perf_stream = StringIO.StringIO(PERF_SCRIPT_OUTPUT) + offsets = list( + bytecode_annotate.bytecode_offset_generator(perf_stream, "bar")) + self.assertListEqual(offsets, [18, 25, 18, 18]) + + def test_bytecode_disassembly_generator(self): + codegen_stream = StringIO.StringIO(D8_CODEGEN_OUTPUT) + disassembly = list( + bytecode_annotate.bytecode_disassembly_generator(codegen_stream, "bar")) + self.assertListEqual(disassembly, [ + "0x3101394b3c0 0 55 push rbp", + "0x3101394b3c1 1 4883c428 REX.W addq rsp,0x28", + "0x3101394b3c5 5 ffe3 jmp rbx"]) + + +if __name__ == "__main__": + unittest.main() |