diff options
Diffstat (limited to 'deps/v8/tools/external-reference-check.py')
-rw-r--r-- | deps/v8/tools/external-reference-check.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/deps/v8/tools/external-reference-check.py b/deps/v8/tools/external-reference-check.py new file mode 100644 index 000000000..386d4a9ee --- /dev/null +++ b/deps/v8/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()) |