diff options
author | evan.lucas <evan.lucas@help.com> | 2015-11-12 06:47:38 -0800 |
---|---|---|
committer | Ali Ijaz Sheikh <ofrobots@google.com> | 2015-12-04 00:06:01 -0800 |
commit | 1e324d883ea5f067999e02ea7fc2054e88974da6 (patch) | |
tree | c7e3a060fcd3bc7b232c562ae317215ca327c86c /deps/v8/tools | |
parent | d9d050d3968380e9c74f9477f30c17a081a4ba48 (diff) | |
download | node-new-1e324d883ea5f067999e02ea7fc2054e88974da6.tar.gz |
deps: backport bc2e393 from v8 upstream
Original commit message:
[tools] Make gen-postmortem-metadata.py more reliable
Instead of basing matches off of whitespace, walk the
inheritance chain and include any classes that inherit
from Object.
R=machenbach@chromium.org,jkummerow@chromium.org
NOTRY=true
Review URL: https://codereview.chromium.org/1435643002
Cr-Commit-Position: refs/heads/master@{#31964}
This adds some missing classes to postmortem info like
JSMap and JSSet.
Ref: https://github.com/nodejs/node/pull/3792
PR-URL: https://github.com/nodejs/node/pull/4106
Reviewed-By: bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: targos - Michaƫl Zasso <mic.besace@gmail.com>
Reviewed-By: rvagg - Rod Vagg <rod@vagg.org>
Diffstat (limited to 'deps/v8/tools')
-rw-r--r-- | deps/v8/tools/gen-postmortem-metadata.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/deps/v8/tools/gen-postmortem-metadata.py b/deps/v8/tools/gen-postmortem-metadata.py index 433fc55d58..1f2c4e7cbe 100644 --- a/deps/v8/tools/gen-postmortem-metadata.py +++ b/deps/v8/tools/gen-postmortem-metadata.py @@ -274,6 +274,20 @@ footer = ''' ''' # +# Get the base class +# +def get_base_class(klass): + if (klass == 'Object'): + return klass; + + if (not (klass in klasses)): + return None; + + k = klasses[klass]; + + return get_base_class(k['parent']); + +# # Loads class hierarchy and type information from "objects.h". # def load_objects(): @@ -311,12 +325,14 @@ def load_objects(): typestr += line; continue; - match = re.match('class (\w[^\s:]*)(: public (\w[^\s{]*))?\s*{', + match = re.match('class (\w[^:]*)(: public (\w[^{]*))?\s*{\s*', line); if (match): - klass = match.group(1); + klass = match.group(1).rstrip().lstrip(); pklass = match.group(3); + if (pklass): + pklass = pklass.rstrip().lstrip(); klasses[klass] = { 'parent': pklass }; # @@ -567,6 +583,9 @@ def emit_config(): keys.sort(); for klassname in keys: pklass = klasses[klassname]['parent']; + bklass = get_base_class(klassname); + if (bklass != 'Object'): + continue; if (pklass == None): continue; |