Changeset 272766 in webkit


Ignore:
Timestamp:
Feb 11, 2021, 6:14:03 PM (4 years ago)
Author:
mark.lam@apple.com
Message:

CodeBlock::propagateTransitions() should also handle OpSetPrivateBrand's LLInt IC.
https://bugs.webkit.org/show_bug.cgi?id=221787

Reviewed by Yusuke Suzuki.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::propagateTransitions):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r272747 r272766  
     12021-02-11  Mark Lam  <mark.lam@apple.com>
     2
     3        CodeBlock::propagateTransitions() should also handle OpSetPrivateBrand's LLInt IC.
     4        https://bugs.webkit.org/show_bug.cgi?id=221787
     5
     6        Reviewed by Yusuke Suzuki.
     7
     8        * bytecode/CodeBlock.cpp:
     9        (JSC::CodeBlock::propagateTransitions):
     10
    1112021-02-11  Alexey Shvayka  <shvaikalesh@gmail.com>
    212
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp

    r272580 r272766  
    11/*
    2  * Copyright (C) 2008-2020 Apple Inc. All rights reserved.
     2 * Copyright (C) 2008-2021 Apple Inc. All rights reserved.
    33 * Copyright (C) 2008 Cameron Zwarich <cwzwarich@uwaterloo.ca>
    44 *
     
    11341134                if (!oldStructureID || !newStructureID)
    11351135                    return;
    1136                 Structure* oldStructure =
    1137                     vm.heap.structureIDTable().get(oldStructureID);
    1138                 Structure* newStructure =
    1139                     vm.heap.structureIDTable().get(newStructureID);
    1140                 if (vm.heap.isMarked(oldStructure))
     1136                Structure* oldStructure = vm.heap.structureIDTable().get(oldStructureID);
     1137                if (vm.heap.isMarked(oldStructure)) {
     1138                    Structure* newStructure = vm.heap.structureIDTable().get(newStructureID);
    11411139                    visitor.appendUnbarriered(newStructure);
     1140                }
    11421141            });
    11431142
     
    11531152                    return;
    11541153
    1155                 Structure* oldStructure =
    1156                     vm.heap.structureIDTable().get(oldStructureID);
    1157                 Structure* newStructure =
    1158                     vm.heap.structureIDTable().get(newStructureID);
    1159                 if (vm.heap.isMarked(oldStructure))
     1154                Structure* oldStructure = vm.heap.structureIDTable().get(oldStructureID);
     1155                if (vm.heap.isMarked(oldStructure)) {
     1156                    Structure* newStructure = vm.heap.structureIDTable().get(newStructureID);
    11601157                    visitor.appendUnbarriered(newStructure);
     1158                }
     1159            });
     1160
     1161            m_metadata->forEach<OpSetPrivateBrand>([&] (auto& metadata) {
     1162                StructureID oldStructureID = metadata.m_oldStructureID;
     1163                StructureID newStructureID = metadata.m_newStructureID;
     1164                if (!oldStructureID || !newStructureID)
     1165                    return;
     1166
     1167                JSCell* brand = metadata.m_brand.get();
     1168                ASSERT(brand);
     1169                if (!vm.heap.isMarked(brand))
     1170                    return;
     1171
     1172                Structure* oldStructure = vm.heap.structureIDTable().get(oldStructureID);
     1173                if (vm.heap.isMarked(oldStructure)) {
     1174                    Structure* newStructure = vm.heap.structureIDTable().get(newStructureID);
     1175                    visitor.appendUnbarriered(newStructure);
     1176                }
    11611177            });
    11621178        }
Note: See TracChangeset for help on using the changeset viewer.