| Index: tools/ignition/linux_perf_bytecode_annotate_test.py
|
| diff --git a/tools/ignition/linux_perf_bytecode_annotate_test.py b/tools/ignition/linux_perf_bytecode_annotate_test.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..15abbeda08b70466c820d1cda67be0d257ecc527
|
| --- /dev/null
|
| +++ b/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()
|
|
|