Skip to content

Instantly share code, notes, and snippets.

@misterdjules
Last active September 6, 2017 21:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save misterdjules/a90a732e36fa6bba9962f29ebbe3f920 to your computer and use it in GitHub Desktop.
Save misterdjules/a90a732e36fa6bba9962f29ebbe3f920 to your computer and use it in GitHub Desktop.

Introduction of JSReceiver's raw_properties_or_hash

See https://chromium-review.googlesource.com/574761.

This change was first relased with V8 6.1.532 (after node 8.4.0, not in master yet):

➜  v8 git:(master) git remote -v
origin	git@github.com:v8/v8.git (fetch)
origin	git@github.com:v8/v8.git (push)
➜  v8 git:(master) git tag --list --contains 21a66b11d36f39955c1c331fdf693aa5e9fddfec | head -1
6.1.532
➜  v8 git:(master)

Changes in properties layout/access

Removal of v8dbg_prop_type_field post-mortem metadata

Basically, the change at https://chromium.googlesource.com/v8/v8/+/8f0bf07b504e8bb27ef3703388c4c0699670331f did the following:

[runtime] Remove PropertyType definition and use PropertyKind/PropertyLocation instead.
    
    Now we can add a constness bit to the PropertyDetails.
    
    BUG=v8:5495
    
    Review-Url: https://codereview.chromium.org/2629423002
    Cr-Commit-Position: refs/heads/master@{#42366}

It was released with V8 5.7.465 (between node 7.x and node 8.0):

➜  v8 git:(master) git tag --list --contains 8f0bf07b504e8bb27ef3703388c4c0699670331f | head -1
5.7.465
➜  v8 git:(master)

but the associated post-mortem metadata was not removed. https://codereview.chromium.org/2636863004 fixed that.

This change was first introduced in V8 5.7.467 (between node 7.x and node 8.0):

➜  v8 git:(master) git log -S'type_field'                         
commit 9f0f50c2ada194a424ce6b2b3b54f82a4d71ccad
Author: franzih <franzih@chromium.org>
Date:   Mon Jan 16 05:38:40 2017 -0800

    [Runtime] Remove obsolete constants.
    
    Remove now obsolete constants (see https://chromium.googlesource.com/v8/v8/+/8f0bf07b504e8bb27ef3703388c4c0699670331f)
    from postmortem metadata generator.
    
    BUG=
    
    Review-Url: https://codereview.chromium.org/2636863004
    Cr-Commit-Position: refs/heads/master@{#42374}

➜  v8 git:(master) git tag --list --contains 9f0f50c2ada194a424ce6b2b3b54f82a4d71ccad | head -1
5.7.467
➜  v8 git:(master)

Removal of v8dbg_prop_type_mask post-mortem metadata

Introduced in V8 5.7.469 (between node 7.x and node 8.0):

commit ac45f88acb2da1e6dad4e4afe08fd7afcccd571d
Author: ishell <ishell@chromium.org>
Date:   Mon Jan 16 06:24:50 2017 -0800

    [runtime] Fix postmortem metadata generator.
    
    NOPRESUBMIT=true
    NOTREECHECKS=true
    NOTRY=true
    BUG=
    
    Review-Url: https://codereview.chromium.org/2636893002
    Cr-Commit-Position: refs/heads/master@{#42376}

diff --git a/tools/gen-postmortem-metadata.py b/tools/gen-postmortem-metadata.py
index c942ee1..8857134 100644
--- a/tools/gen-postmortem-metadata.py
+++ b/tools/gen-postmortem-metadata.py
@@ -93,8 +93,12 @@ consts_misc = [
 
     { 'name': 'prop_idx_first',
         'value': 'DescriptorArray::kFirstIndex' },
-    { 'name': 'prop_type_mask',
-        'value': 'PropertyDetails::TypeField::kMask' },
+    { 'name': 'prop_kind_Data',
+        'value': 'kData' },
+    { 'name': 'prop_kind_Accessor',
+        'value': 'kAccessor' },
+    { 'name': 'prop_kind_mask',
+        'value': 'PropertyDetails::KindField::kMask' },
     { 'name': 'prop_index_mask',
         'value': 'PropertyDetails::FieldIndexField::kMask' },
     { 'name': 'prop_index_shift',
➜  v8 git:(master) git tag --list --contains ac45f88acb2da1e6dad4e4afe08fd7afcccd571d | head -1
5.7.469
➜  v8 git:(master)

Relevant changes in llnode

See https://github.com/nodejs/llnode/commit/b73e042680ab34595a14998e7324d79c915133d7, which depends on post-mortem metadata changes at https://codereview.chromium.org/2842843004/diff/1/tools/gen-postmortem-metadata.py.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment