| Index: tools/external-reference-check.py
|
| diff --git a/tools/external-reference-check.py b/tools/external-reference-check.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..386d4a9ee51293d6c05f153544d2b9e771cd45d6
|
| --- /dev/null
|
| +++ b/tools/external-reference-check.py
|
| @@ -0,0 +1,43 @@
|
| +#!/usr/bin/env python
|
| +# Copyright 2014 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 re
|
| +import os
|
| +import sys
|
| +
|
| +DECLARE_FILE = "src/assembler.h"
|
| +REGISTER_FILE = "src/serialize.cc"
|
| +DECLARE_RE = re.compile("\s*static ExternalReference ([^(]+)\(")
|
| +REGISTER_RE = re.compile("\s*Add\(ExternalReference::([^(]+)\(")
|
| +
|
| +WORKSPACE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), ".."))
|
| +
|
| +# Ignore those.
|
| +BLACKLISTED = [
|
| + "page_flags",
|
| + "math_exp_constants",
|
| + "math_exp_log_table",
|
| + "ForDeoptEntry",
|
| +]
|
| +
|
| +def Find(filename, re):
|
| + references = []
|
| + with open(filename, "r") as f:
|
| + for line in f:
|
| + match = re.match(line)
|
| + if match:
|
| + references.append(match.group(1))
|
| + return references
|
| +
|
| +def Main():
|
| + declarations = Find(DECLARE_FILE, DECLARE_RE)
|
| + registrations = Find(REGISTER_FILE, REGISTER_RE)
|
| + difference = list(set(declarations) - set(registrations) - set(BLACKLISTED))
|
| + for reference in difference:
|
| + print("Declared but not registered: ExternalReference::%s" % reference)
|
| + return len(difference) > 0
|
| +
|
| +if __name__ == "__main__":
|
| + sys.exit(Main())
|
|
|