blob: be01dec1d07a7ca16e2cf006226303e15f883e48 [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001#!/usr/bin/env python
2# Copyright 2014 the V8 project authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import re
7import os
8import sys
9
10DECLARE_FILE = "src/assembler.h"
Ben Murdochda12d292016-06-02 14:46:10 +010011REGISTER_FILE = "src/external-reference-table.cc"
Ben Murdochb8a8cc12014-11-26 15:28:44 +000012DECLARE_RE = re.compile("\s*static ExternalReference ([^(]+)\(")
13REGISTER_RE = re.compile("\s*Add\(ExternalReference::([^(]+)\(")
14
15WORKSPACE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), ".."))
16
17# Ignore those.
18BLACKLISTED = [
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000019 "fixed_typed_array_base_data_offset",
Ben Murdochb8a8cc12014-11-26 15:28:44 +000020 "page_flags",
21 "math_exp_constants",
22 "math_exp_log_table",
23 "ForDeoptEntry",
24]
25
26def Find(filename, re):
27 references = []
28 with open(filename, "r") as f:
29 for line in f:
30 match = re.match(line)
31 if match:
32 references.append(match.group(1))
33 return references
34
35def Main():
36 declarations = Find(DECLARE_FILE, DECLARE_RE)
37 registrations = Find(REGISTER_FILE, REGISTER_RE)
38 difference = list(set(declarations) - set(registrations) - set(BLACKLISTED))
39 for reference in difference:
40 print("Declared but not registered: ExternalReference::%s" % reference)
41 return len(difference) > 0
42
43if __name__ == "__main__":
44 sys.exit(Main())