| #!/usr/bin/env python |
| |
| # Copyright 2019 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. |
| |
| from __future__ import print_function |
| import argparse |
| import io |
| import sys |
| |
| from wasm import * |
| |
| def parse_args(): |
| parser = argparse.ArgumentParser(\ |
| description="Read compilation hints from Wasm module.") |
| parser.add_argument("in_wasm_file", \ |
| type=str, \ |
| help="wasm module") |
| return parser.parse_args() |
| |
| if __name__ == "__main__": |
| args = parse_args() |
| in_wasm_file = args.in_wasm_file if args.in_wasm_file else sys.stdin.fileno() |
| with io.open(in_wasm_file, "rb") as fin: |
| read_magic_number(fin); |
| read_version(fin); |
| while True: |
| id, bs = read_varuintN(fin) |
| if id == None: |
| break |
| payload_length, bs = read_varuintN(fin) |
| if id == CUSTOM_SECTION_ID: |
| section_name_length, section_name_length_bs = read_varuintN(fin) |
| section_name_bs = fin.read(section_name_length) |
| if section_name_bs == "compilationHints": |
| num_hints, bs = read_varuintN(fin) |
| print("Custom section compilationHints with ", num_hints, "hints:") |
| for i in range(num_hints): |
| hint, bs = read_uint8(fin) |
| print(i, " ", hex(hint)) |
| else: |
| remaining_length = payload_length \ |
| - len(section_name_length_bs) \ |
| - len(section_name_bs) |
| fin.read() |
| else: |
| fin.read(payload_length) |