Changeset 262478 in webkit


Ignore:
Timestamp:
Jun 2, 2020, 11:25:50 PM (5 years ago)
Author:
mark.lam@apple.com
Message:

Rolling out r262475 to unbreak Windows bot.
https://bugs.webkit.org/show_bug.cgi?id=212680

Not reviewed.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • assembler/MacroAssemblerARM64.h:
  • assembler/MacroAssemblerX86_64.h:
  • assembler/testmasm.cpp:

(JSC::testCountTrailingZeros64WithoutNullCheck):
(JSC::run):
(JSC::testStore64Imm64AddressPointer): Deleted.

  • dfg/DFGDoesGCCheck.cpp: Removed.
  • dfg/DFGDoesGCCheck.h: Removed.
  • dfg/DFGGraph.cpp:
  • dfg/DFGOSRExit.cpp:

(JSC::DFG::operationCompileOSRExit):
(JSC::DFG::OSRExit::compileExit):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileStub):
(JSC::FTL::operationCompileFTLOSRExit):

  • heap/CompleteSubspace.cpp:

(JSC::CompleteSubspace::tryAllocateSlow):
(JSC::CompleteSubspace::reallocatePreciseAllocationNonVirtual):

  • heap/CompleteSubspaceInlines.h:

(JSC::CompleteSubspace::allocateNonVirtual):

  • heap/DeferGC.h:

(JSC::DeferGC::~DeferGC):

  • heap/GCDeferralContextInlines.h:

(JSC::GCDeferralContext::~GCDeferralContext):

  • heap/Heap.cpp:

(JSC::Heap::collectNow):
(JSC::Heap::collectAsync):
(JSC::Heap::collectSync):
(JSC::Heap::stopIfNecessarySlow):
(JSC::Heap::collectIfNecessaryOrDefer):

  • heap/Heap.h:

(JSC::Heap::expectDoesGC const):
(JSC::Heap::setExpectDoesGC):
(JSC::Heap::addressOfExpectDoesGC):
(JSC::Heap::addressOfDoesGC): Deleted.
(JSC::Heap::setDoesGCExpectation): Deleted.
(JSC::Heap::verifyCanGC): Deleted.

  • heap/HeapInlines.h:

(JSC::Heap::acquireAccess):
(JSC::Heap::stopIfNecessary):

  • heap/LocalAllocatorInlines.h:

(JSC::LocalAllocator::allocate):

  • heap/PreciseAllocation.cpp:

(JSC::PreciseAllocation::tryCreate):
(JSC::PreciseAllocation::createForLowerTier):

  • runtime/JSString.h:

(JSC::jsSingleCharacterString):
(JSC::JSString::toAtomString const):
(JSC::JSString::toExistingAtomString const):
(JSC::JSString::value const):
(JSC::JSString::tryGetValue const):
(JSC::JSRopeString::unsafeView const):
(JSC::JSRopeString::viewWithUnderlyingString const):
(JSC::JSString::unsafeView const):

  • runtime/RegExpMatchesArray.h:

(JSC::createRegExpMatchesArray):

Location:
trunk/Source/JavaScriptCore
Files:
2 deleted
23 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/CMakeLists.txt

    r262475 r262478  
    565565    dfg/DFGCommon.h
    566566    dfg/DFGCompilationMode.h
    567     dfg/DFGDoesGCCheck.h
    568567    dfg/DFGMinifiedID.h
    569568
  • trunk/Source/JavaScriptCore/ChangeLog

    r262475 r262478  
     12020-06-02  Mark Lam  <mark.lam@apple.com>
     2
     3        Rolling out r262475 to unbreak Windows bot.
     4        https://bugs.webkit.org/show_bug.cgi?id=212680
     5
     6        Not reviewed.
     7
     8        * CMakeLists.txt:
     9        * JavaScriptCore.xcodeproj/project.pbxproj:
     10        * Sources.txt:
     11        * assembler/MacroAssemblerARM64.h:
     12        * assembler/MacroAssemblerX86_64.h:
     13        * assembler/testmasm.cpp:
     14        (JSC::testCountTrailingZeros64WithoutNullCheck):
     15        (JSC::run):
     16        (JSC::testStore64Imm64AddressPointer): Deleted.
     17        * dfg/DFGDoesGCCheck.cpp: Removed.
     18        * dfg/DFGDoesGCCheck.h: Removed.
     19        * dfg/DFGGraph.cpp:
     20        * dfg/DFGOSRExit.cpp:
     21        (JSC::DFG::operationCompileOSRExit):
     22        (JSC::DFG::OSRExit::compileExit):
     23        * dfg/DFGSpeculativeJIT64.cpp:
     24        (JSC::DFG::SpeculativeJIT::compile):
     25        * ftl/FTLLowerDFGToB3.cpp:
     26        (JSC::FTL::DFG::LowerDFGToB3::compileNode):
     27        * ftl/FTLOSRExitCompiler.cpp:
     28        (JSC::FTL::compileStub):
     29        (JSC::FTL::operationCompileFTLOSRExit):
     30        * heap/CompleteSubspace.cpp:
     31        (JSC::CompleteSubspace::tryAllocateSlow):
     32        (JSC::CompleteSubspace::reallocatePreciseAllocationNonVirtual):
     33        * heap/CompleteSubspaceInlines.h:
     34        (JSC::CompleteSubspace::allocateNonVirtual):
     35        * heap/DeferGC.h:
     36        (JSC::DeferGC::~DeferGC):
     37        * heap/GCDeferralContextInlines.h:
     38        (JSC::GCDeferralContext::~GCDeferralContext):
     39        * heap/Heap.cpp:
     40        (JSC::Heap::collectNow):
     41        (JSC::Heap::collectAsync):
     42        (JSC::Heap::collectSync):
     43        (JSC::Heap::stopIfNecessarySlow):
     44        (JSC::Heap::collectIfNecessaryOrDefer):
     45        * heap/Heap.h:
     46        (JSC::Heap::expectDoesGC const):
     47        (JSC::Heap::setExpectDoesGC):
     48        (JSC::Heap::addressOfExpectDoesGC):
     49        (JSC::Heap::addressOfDoesGC): Deleted.
     50        (JSC::Heap::setDoesGCExpectation): Deleted.
     51        (JSC::Heap::verifyCanGC): Deleted.
     52        * heap/HeapInlines.h:
     53        (JSC::Heap::acquireAccess):
     54        (JSC::Heap::stopIfNecessary):
     55        * heap/LocalAllocatorInlines.h:
     56        (JSC::LocalAllocator::allocate):
     57        * heap/PreciseAllocation.cpp:
     58        (JSC::PreciseAllocation::tryCreate):
     59        (JSC::PreciseAllocation::createForLowerTier):
     60        * runtime/JSString.h:
     61        (JSC::jsSingleCharacterString):
     62        (JSC::JSString::toAtomString const):
     63        (JSC::JSString::toExistingAtomString const):
     64        (JSC::JSString::value const):
     65        (JSC::JSString::tryGetValue const):
     66        (JSC::JSRopeString::unsafeView const):
     67        (JSC::JSRopeString::viewWithUnderlyingString const):
     68        (JSC::JSString::unsafeView const):
     69        * runtime/RegExpMatchesArray.h:
     70        (JSC::createRegExpMatchesArray):
     71
    1722020-06-02  Mark Lam  <mark.lam@apple.com>
    273
  • trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r262475 r262478  
    19371937                FEB58C15187B8B160098EF0B /* ErrorHandlingScope.h in Headers */ = {isa = PBXBuildFile; fileRef = FEB58C13187B8B160098EF0B /* ErrorHandlingScope.h */; settings = {ATTRIBUTES = (Private, ); }; };
    19381938                FEC160322339E9F900A04CB8 /* CellSize.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC160312339E9F900A04CB8 /* CellSize.h */; };
    1939                 FEC3A3A1248735CA00395B54 /* DFGDoesGCCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC3A3A0248735BC00395B54 /* DFGDoesGCCheck.h */; settings = {ATTRIBUTES = (Private, ); }; };
    19401939                FEC5797323105B5100BCA83F /* VMInspectorInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC5797223105B4800BCA83F /* VMInspectorInlines.h */; };
    19411940                FEC5797623105F4E00BCA83F /* Integrity.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC5797523105F4300BCA83F /* Integrity.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    52345233                FEB58C13187B8B160098EF0B /* ErrorHandlingScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ErrorHandlingScope.h; sourceTree = "<group>"; };
    52355234                FEC160312339E9F900A04CB8 /* CellSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CellSize.h; sourceTree = "<group>"; };
    5236                 FEC3A39F248735BC00395B54 /* DFGDoesGCCheck.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DFGDoesGCCheck.cpp; path = dfg/DFGDoesGCCheck.cpp; sourceTree = "<group>"; };
    5237                 FEC3A3A0248735BC00395B54 /* DFGDoesGCCheck.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DFGDoesGCCheck.h; path = dfg/DFGDoesGCCheck.h; sourceTree = "<group>"; };
    52385235                FEC5797223105B4800BCA83F /* VMInspectorInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VMInspectorInlines.h; sourceTree = "<group>"; };
    52395236                FEC5797423105F4200BCA83F /* Integrity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Integrity.cpp; sourceTree = "<group>"; };
     
    79007897                                0F5A1271192D9FDF008764A3 /* DFGDoesGC.cpp */,
    79017898                                0F5A1272192D9FDF008764A3 /* DFGDoesGC.h */,
    7902                                 FEC3A39F248735BC00395B54 /* DFGDoesGCCheck.cpp */,
    7903                                 FEC3A3A0248735BC00395B54 /* DFGDoesGCCheck.h */,
    79047899                                0FD81AD0154FB4EB00983E72 /* DFGDominators.h */,
    79057900                                0F1E3A441534CBAD000F9456 /* DFGDoubleFormatState.h */,
     
    1020210197                                0FE050281AA9095600D33B33 /* ScopedArguments.h in Headers */,
    1020310198                                0FE050291AA9095600D33B33 /* ScopedArgumentsTable.h in Headers */,
    10204                                 FEC3A3A1248735CA00395B54 /* DFGDoesGCCheck.h in Headers */,
    1020510199                                0FE0502B1AA9095600D33B33 /* ScopeOffset.h in Headers */,
    1020610200                                0F24E55217EE274900ABB217 /* ScratchRegisterAllocator.h in Headers */,
  • trunk/Source/JavaScriptCore/Sources.txt

    r262475 r262478  
    348348dfg/DFGDisassembler.cpp
    349349dfg/DFGDoesGC.cpp
    350 dfg/DFGDoesGCCheck.cpp
    351350dfg/DFGDriver.cpp
    352351dfg/DFGEdge.cpp
  • trunk/Source/JavaScriptCore/assembler/MacroAssemblerARM64.h

    r262475 r262478  
    14601460    }
    14611461
    1462     void store64(TrustedImm64 imm, const void* address)
    1463     {
    1464         if (!imm.m_value) {
    1465             store64(ARM64Registers::zr, address);
    1466             return;
    1467         }
    1468 
    1469         moveToCachedReg(imm, dataMemoryTempRegister());
    1470         store64(dataTempRegister, address);
    1471     }
    1472 
    14731462    void store64(TrustedImm32 imm, ImplicitAddress address)
    14741463    {
  • trunk/Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h

    r262475 r262478  
    978978    }
    979979
    980     void store64(TrustedImm64 imm, void* address)
    981     {
    982         if (CAN_SIGN_EXTEND_32_64(imm.m_value)) {
    983             auto addressReg = scratchRegister();
    984             move(TrustedImmPtr(address), addressReg);
    985             store64(TrustedImm32(static_cast<int32_t>(imm.m_value)), addressReg);
    986             return;
    987         }
    988 
    989         auto src = scratchRegister();
    990         move(imm, src);
    991         swap(src, X86Registers::eax);
    992         m_assembler.movq_EAXm(address);
    993         swap(src, X86Registers::eax);
    994     }
    995 
    996980    void store64(TrustedImm64 imm, ImplicitAddress address)
    997981    {
  • trunk/Source/JavaScriptCore/assembler/testmasm.cpp

    r262475 r262478  
    659659    testCountTrailingZeros64Impl(wordCanBeZero);
    660660}
    661 
    662 void testStore64Imm64AddressPointer()
    663 {
    664     auto doTest = [] (int64_t value) {
    665         int64_t dest;
    666         void* destAddress = &dest;
    667 
    668         auto test = compile([=] (CCallHelpers& jit) {
    669             emitFunctionPrologue(jit);
    670             jit.store64(CCallHelpers::TrustedImm64(value), destAddress);
    671             emitFunctionEpilogue(jit);
    672             jit.ret();
    673         });
    674 
    675         invoke<size_t>(test);
    676         CHECK_EQ(dest, value);
    677     };
    678    
    679     for (auto value : int64Operands())
    680         doTest(value);
    681 
    682     doTest(0x98765555AAAA4321);
    683     doTest(0xAAAA432198765555);
    684 }
    685 
    686661#endif // CPU(X86_64) || CPU(ARM64)
    687662
     
    25252500    RUN(testCountTrailingZeros64());
    25262501    RUN(testCountTrailingZeros64WithoutNullCheck());
    2527     RUN(testStore64Imm64AddressPointer());
    25282502#endif
    25292503
  • trunk/Source/JavaScriptCore/dfg/DFGGraph.cpp

    r262475 r262478  
    6363
    6464// Creates an array of stringized names.
    65 const char* dfgOpNames[] = {
     65static const char* dfgOpNames[] = {
    6666#define STRINGIZE_DFG_OP_ENUM(opcode, flags) #opcode ,
    6767    FOR_EACH_DFG_OP(STRINGIZE_DFG_OP_ENUM)
  • trunk/Source/JavaScriptCore/dfg/DFGOSRExit.cpp

    r262475 r262478  
    147147        // We're about to exit optimized code. So, there's no longer any optimized
    148148        // code running that expects no GC.
    149         vm.heap.setDoesGCExpectation(true, DoesGCCheck::Special::DFGOSRExit);
     149        vm.heap.setExpectDoesGC(true);
    150150    }
    151151
     
    556556        // materialization below (see emitRestoreArguments()).
    557557
    558         // Even though we set Heap::m_doesGC in compileOSRExit(), we also need
     558        // Even though we set Heap::m_expectDoesGC in compileOSRExit(), we also need
    559559        // to set it here because compileOSRExit() is only called on the first time
    560560        // we exit from this site, but all subsequent exits will take this compiled
    561561        // ramp without calling compileOSRExit() first.
    562         jit.store64(CCallHelpers::TrustedImm64(DoesGCCheck::encode(true, DoesGCCheck::Special::DFGOSRExit)), vm.heap.addressOfDoesGC());
     562        jit.store8(CCallHelpers::TrustedImm32(true), vm.heap.addressOfExpectDoesGC());
    563563    }
    564564
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp

    r262475 r262478  
    21392139    if (validateDFGDoesGC) {
    21402140        bool expectDoesGC = doesGC(m_jit.graph(), node);
    2141         m_jit.store64(TrustedImm64(DoesGCCheck::encode(expectDoesGC, node->index(), node->op())), vm().heap.addressOfDoesGC());
     2141        m_jit.store8(TrustedImm32(expectDoesGC), vm().heap.addressOfExpectDoesGC());
    21422142    }
    21432143
  • trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp

    r262475 r262478  
    705705        if (validateDFGDoesGC) {
    706706            bool expectDoesGC = doesGC(m_graph, m_node);
    707             m_out.store(m_out.constInt64(DoesGCCheck::encode(expectDoesGC, m_node->index(), m_node->op())), m_out.absolute(vm().heap.addressOfDoesGC()));
     707            m_out.store(m_out.constBool(expectDoesGC), m_out.absolute(vm().heap.addressOfExpectDoesGC()));
    708708        }
    709709
  • trunk/Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp

    r262475 r262478  
    212212        // materialization below.
    213213
    214         // Even though we set Heap::m_doesGC in compileFTLOSRExit(), we also need
     214        // Even though we set Heap::m_expectDoesGC in compileFTLOSRExit(), we also need
    215215        // to set it here because compileFTLOSRExit() is only called on the first time
    216216        // we exit from this site, but all subsequent exits will take this compiled
    217217        // ramp without calling compileFTLOSRExit() first.
    218         jit.store64(CCallHelpers::TrustedImm64(DoesGCCheck::encode(true, DoesGCCheck::Special::FTLOSRExit)), vm.heap.addressOfDoesGC());
     218        jit.store8(CCallHelpers::TrustedImm32(true), vm.heap.addressOfExpectDoesGC());
    219219    }
    220220
     
    549549        // We're about to exit optimized code. So, there's no longer any optimized
    550550        // code running that expects no GC.
    551         vm.heap.setDoesGCExpectation(true, DoesGCCheck::Special::FTLOSRExit);
     551        vm.heap.setExpectDoesGC(true);
    552552    }
    553553
  • trunk/Source/JavaScriptCore/heap/CompleteSubspace.cpp

    r262475 r262478  
    11/*
    2  * Copyright (C) 2017-2020 Apple Inc. All rights reserved.
     2 * Copyright (C) 2017-2019 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    121121{
    122122    if (validateDFGDoesGC)
    123         vm.heap.verifyCanGC();
     123        RELEASE_ASSERT(vm.heap.expectDoesGC());
    124124
    125125    sanitizeStackForVM(vm);
     
    157157{
    158158    if (validateDFGDoesGC)
    159         vm.heap.verifyCanGC();
     159        RELEASE_ASSERT(vm.heap.expectDoesGC());
    160160
    161161    // The following conditions are met in Butterfly for example.
  • trunk/Source/JavaScriptCore/heap/CompleteSubspaceInlines.h

    r262475 r262478  
    11/*
    2  * Copyright (C) 2018-2020 Apple Inc. All rights reserved.
     2 * Copyright (C) 2018-2019 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    3434{
    3535    if (validateDFGDoesGC)
    36         vm.heap.verifyCanGC();
     36        RELEASE_ASSERT(vm.heap.expectDoesGC());
    3737
    3838    if (Allocator allocator = allocatorForNonVirtual(size, AllocatorForMode::AllocatorIfExists))
  • trunk/Source/JavaScriptCore/heap/DeferGC.h

    r262475 r262478  
    11/*
    2  * Copyright (C) 2013-2020 Apple Inc. All rights reserved.
     2 * Copyright (C) 2013-2019 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    4646    {
    4747        if (validateDFGDoesGC)
    48             m_heap.verifyCanGC();
     48            RELEASE_ASSERT(m_heap.expectDoesGC());
    4949        m_heap.decrementDeferralDepthAndGCIfNeeded();
    5050    }
  • trunk/Source/JavaScriptCore/heap/GCDeferralContextInlines.h

    r262475 r262478  
    11/*
    2  * Copyright (C) 2016-2020 Apple Inc. All rights reserved.
     2 * Copyright (C) 2016-2019 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    3939{
    4040    if (validateDFGDoesGC)
    41         m_heap.verifyCanGC();
     41        RELEASE_ASSERT(m_heap.expectDoesGC());
    4242
    4343    if (UNLIKELY(m_shouldGC))
  • trunk/Source/JavaScriptCore/heap/Heap.cpp

    r262475 r262478  
    11/*
    2  *  Copyright (C) 2003-2020 Apple Inc. All rights reserved.
     2 *  Copyright (C) 2003-2019 Apple Inc. All rights reserved.
    33 *  Copyright (C) 2007 Eric Seidel <eric@webkit.org>
    44 *
     
    10651065{
    10661066    if (validateDFGDoesGC)
    1067         verifyCanGC();
     1067        RELEASE_ASSERT(expectDoesGC());
    10681068
    10691069    switch (synchronousness) {
     
    10981098{
    10991099    if (validateDFGDoesGC)
    1100         verifyCanGC();
     1100        RELEASE_ASSERT(expectDoesGC());
    11011101
    11021102    if (!m_isSafeToCollect)
     
    11221122{
    11231123    if (validateDFGDoesGC)
    1124         verifyCanGC();
     1124        RELEASE_ASSERT(expectDoesGC());
    11251125
    11261126    if (!m_isSafeToCollect)
     
    17851785{
    17861786    if (validateDFGDoesGC)
    1787         verifyCanGC();
     1787        RELEASE_ASSERT(expectDoesGC());
    17881788
    17891789    while (stopIfNecessarySlow(m_worldState.load())) { }
     
    18001800{
    18011801    if (validateDFGDoesGC)
    1802         verifyCanGC();
     1802        RELEASE_ASSERT(expectDoesGC());
    18031803
    18041804    RELEASE_ASSERT(oldState & hasAccessBit);
     
    26022602    ASSERT(deferralContext || isDeferred() || !DisallowGC::isInEffectOnCurrentThread());
    26032603    if (validateDFGDoesGC)
    2604         verifyCanGC();
     2604        RELEASE_ASSERT(expectDoesGC());
    26052605
    26062606    if (!m_isSafeToCollect)
  • trunk/Source/JavaScriptCore/heap/Heap.h

    r262475 r262478  
    22 *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
    33 *  Copyright (C) 2001 Peter Kelly (pmk@post.com)
    4  *  Copyright (C) 2003-2020 Apple Inc. All rights reserved.
     4 *  Copyright (C) 2003-2019 Apple Inc. All rights reserved.
    55 *
    66 *  This library is free software; you can redistribute it and/or
     
    2626#include "CollectionScope.h"
    2727#include "CollectorPhase.h"
    28 #include "DFGDoesGCCheck.h"
    2928#include "DeleteAllCodeEffort.h"
    3029#include "GCConductor.h"
     
    305304
    306305#if ENABLE(DFG_DOES_GC_VALIDATION)
    307     DoesGCCheck* addressOfDoesGC() { return &m_doesGC; }
    308     void setDoesGCExpectation(bool expectDoesGC, unsigned nodeIndex, unsigned nodeOp) { m_doesGC.set(expectDoesGC, nodeIndex, nodeOp); }
    309     void setDoesGCExpectation(bool expectDoesGC, DoesGCCheck::Special special) { m_doesGC.set(expectDoesGC, special); }
    310     void verifyCanGC() { m_doesGC.verifyCanGC(vm()); }
     306    bool expectDoesGC() const { return m_expectDoesGC; }
     307    void setExpectDoesGC(bool value) { m_expectDoesGC = value; }
     308    bool* addressOfExpectDoesGC() { return &m_expectDoesGC; }
    311309#else
    312     DoesGCCheck* addressOfDoesGC() { UNREACHABLE_FOR_PLATFORM(); return nullptr; }
    313     void setDoesGCExpectation(bool, unsigned, unsigned) { }
    314     void setDoesGCExpectation(bool, DoesGCCheck::Special) { }
    315     void verifyCanGC() { }
     310    bool expectDoesGC() const { UNREACHABLE_FOR_PLATFORM(); return true; }
     311    void setExpectDoesGC(bool) { UNREACHABLE_FOR_PLATFORM(); }
     312    bool* addressOfExpectDoesGC() { UNREACHABLE_FOR_PLATFORM(); return nullptr; }
    316313#endif
    317314
     
    610607    Lock m_raceMarkStackLock;
    611608#if ENABLE(DFG_DOES_GC_VALIDATION)
    612     DoesGCCheck m_doesGC;
     609    bool m_expectDoesGC { true };
    613610#endif
    614611
  • trunk/Source/JavaScriptCore/heap/HeapInlines.h

    r262475 r262478  
    237237{
    238238    if (validateDFGDoesGC)
    239         verifyCanGC();
     239        RELEASE_ASSERT(expectDoesGC());
    240240
    241241    if (m_worldState.compareExchangeWeak(0, hasAccessBit))
     
    264264{
    265265    if (validateDFGDoesGC)
    266         verifyCanGC();
     266        RELEASE_ASSERT(expectDoesGC());
    267267
    268268    if (mayNeedToStop())
  • trunk/Source/JavaScriptCore/heap/LocalAllocatorInlines.h

    r262475 r262478  
    3434{
    3535    if (validateDFGDoesGC)
    36         heap.verifyCanGC();
     36        RELEASE_ASSERT(heap.expectDoesGC());
    3737    return m_freeList.allocate(
    3838        [&] () -> HeapCell* {
  • trunk/Source/JavaScriptCore/heap/PreciseAllocation.cpp

    r262475 r262478  
    4444{
    4545    if (validateDFGDoesGC)
    46         heap.verifyCanGC();
     46        RELEASE_ASSERT(heap.expectDoesGC());
    4747
    4848    size_t adjustedAlignmentAllocationSize = headerSize() + size + halfAlignment;
     
    124124{
    125125    if (validateDFGDoesGC)
    126         heap.verifyCanGC();
     126        RELEASE_ASSERT(heap.expectDoesGC());
    127127
    128128    size_t adjustedAlignmentAllocationSize = headerSize() + size + halfAlignment;
  • trunk/Source/JavaScriptCore/runtime/JSString.h

    r262475 r262478  
    734734{
    735735    if (validateDFGDoesGC)
    736         vm.heap.verifyCanGC();
     736        RELEASE_ASSERT(vm.heap.expectDoesGC());
    737737    if (c <= maxSingleCharacterString)
    738738        return vm.smallStrings.singleCharacterString(c);
     
    764764{
    765765    if (validateDFGDoesGC)
    766         vm().heap.verifyCanGC();
     766        RELEASE_ASSERT(vm().heap.expectDoesGC());
    767767    if (isRope())
    768768        return static_cast<const JSRopeString*>(this)->resolveRopeToAtomString(globalObject);
     
    773773{
    774774    if (validateDFGDoesGC)
    775         vm().heap.verifyCanGC();
     775        RELEASE_ASSERT(vm().heap.expectDoesGC());
    776776    if (isRope())
    777777        return static_cast<const JSRopeString*>(this)->resolveRopeToExistingAtomString(globalObject);
     
    784784{
    785785    if (validateDFGDoesGC)
    786         vm().heap.verifyCanGC();
     786        RELEASE_ASSERT(vm().heap.expectDoesGC());
    787787    if (isRope())
    788788        return static_cast<const JSRopeString*>(this)->resolveRope(globalObject);
     
    794794    if (allocationAllowed) {
    795795        if (validateDFGDoesGC)
    796             vm().heap.verifyCanGC();
     796            RELEASE_ASSERT(vm().heap.expectDoesGC());
    797797        if (isRope()) {
    798798            // Pass nullptr for the JSGlobalObject so that resolveRope does not throw in the event of an OOM error.
     
    984984{
    985985    if (validateDFGDoesGC)
    986         vm().heap.verifyCanGC();
     986        RELEASE_ASSERT(vm().heap.expectDoesGC());
    987987    if (isSubstring()) {
    988988        auto& base = substringBase()->valueInternal();
     
    997997{
    998998    if (validateDFGDoesGC)
    999         vm().heap.verifyCanGC();
     999        RELEASE_ASSERT(vm().heap.expectDoesGC());
    10001000    if (isSubstring()) {
    10011001        auto& base = substringBase()->valueInternal();
     
    10111011{
    10121012    if (validateDFGDoesGC)
    1013         vm().heap.verifyCanGC();
     1013        RELEASE_ASSERT(vm().heap.expectDoesGC());
    10141014    if (isRope())
    10151015        return static_cast<const JSRopeString*>(this)->unsafeView(globalObject);
  • trunk/Source/JavaScriptCore/runtime/RegExpMatchesArray.h

    r262475 r262478  
    6565{
    6666    if (validateDFGDoesGC)
    67         vm.heap.verifyCanGC();
     67        RELEASE_ASSERT(vm.heap.expectDoesGC());
    6868
    6969    Vector<int, 32> subpatternResults;
Note: See TracChangeset for help on using the changeset viewer.