Add ScopeInfo constants to post-mortem metadata
authorjulien.gilli <julien.gilli@joyent.com>
Mon, 21 Sep 2015 05:45:20 +0000 (22:45 -0700)
committerCommit bot <commit-bot@chromium.org>
Mon, 21 Sep 2015 05:45:38 +0000 (05:45 +0000)
mdb_v8, a post-mortem debugging tool for Node.js, allows users to
inspect ScopeInfo structures in order to get more information about
closures.

Currently, it hardcodes the metadata it uses to find this information.
This change allows it to get this metadata from the node binary itself,
and thus to adapt to future changes made to the layout of the ScopeInfo
data structure.

BUG=

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/1350843003

Cr-Commit-Position: refs/heads/master@{#30843}

src/objects.h
tools/gen-postmortem-metadata.py

index e28081c33f4cd8bb48dfee82dbfb9aa9e86dfbd4..b35d9ba9f7acabbb2ea559812f535433c85fb60c 100644 (file)
@@ -4054,7 +4054,6 @@ class ScopeInfo : public FixedArray {
   FOR_EACH_SCOPE_INFO_NUMERIC_FIELD(FIELD_ACCESSORS)
 #undef FIELD_ACCESSORS
 
- private:
   enum {
 #define DECL_INDEX(name) k##name,
     FOR_EACH_SCOPE_INFO_NUMERIC_FIELD(DECL_INDEX)
@@ -4062,6 +4061,7 @@ class ScopeInfo : public FixedArray {
     kVariablePartIndex
   };
 
+ private:
   // The layout of the variable part of a ScopeInfo is as follows:
   // 1. ParameterEntries:
   //    This part stores the names of the parameters for function scopes. One
index 9a4c9f503f656d4d15ec2379b5121241e9953aa8..6297be4e6412af17aa2db0c82d63913a25fcef8c 100644 (file)
@@ -132,6 +132,15 @@ consts_misc = [
         'value': 'JavaScriptFrameConstants::kFunctionOffset' },
     { 'name': 'off_fp_args',
         'value': 'JavaScriptFrameConstants::kLastParameterOffset' },
+
+    { 'name': 'scopeinfo_idx_nparams',
+        'value': 'ScopeInfo::kParameterCount' },
+    { 'name': 'scopeinfo_idx_nstacklocals',
+        'value': 'ScopeInfo::kStackLocalCount' },
+    { 'name': 'scopeinfo_idx_ncontextlocals',
+        'value': 'ScopeInfo::kContextLocalCount' },
+    { 'name': 'scopeinfo_idx_first_vars',
+        'value': 'ScopeInfo::kVariablePartIndex' },
 ];
 
 #