diff options
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGRepatch.cpp')
-rw-r--r-- | Source/JavaScriptCore/dfg/DFGRepatch.cpp | 111 |
1 files changed, 56 insertions, 55 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGRepatch.cpp b/Source/JavaScriptCore/dfg/DFGRepatch.cpp index bba3a5b43..1063f3c50 100644 --- a/Source/JavaScriptCore/dfg/DFGRepatch.cpp +++ b/Source/JavaScriptCore/dfg/DFGRepatch.cpp @@ -37,6 +37,7 @@ #include "Operations.h" #include "PolymorphicPutByIdList.h" #include "RepatchBuffer.h" +#include "StructureRareDataInlines.h" #include <wtf/StringPrintStream.h> namespace JSC { namespace DFG { @@ -171,7 +172,7 @@ static void linkRestoreScratch(LinkBuffer& patchBuffer, bool needToRestoreScratc static void generateProtoChainAccessStub(ExecState* exec, StructureStubInfo& stubInfo, StructureChain* chain, size_t count, PropertyOffset offset, Structure* structure, CodeLocationLabel successLabel, CodeLocationLabel slowCaseLabel, RefPtr<JITStubRoutine>& stubRoutine) { - JSGlobalData* globalData = &exec->globalData(); + VM* vm = &exec->vm(); MacroAssembler stubJit; @@ -230,7 +231,7 @@ static void generateProtoChainAccessStub(ExecState* exec, StructureStubInfo& stu emitRestoreScratch(stubJit, needToRestoreScratch, scratchGPR, success, fail, failureCases); - LinkBuffer patchBuffer(*globalData, &stubJit, exec->codeBlock()); + LinkBuffer patchBuffer(*vm, &stubJit, exec->codeBlock()); linkRestoreScratch(patchBuffer, needToRestoreScratch, success, fail, failureCases, successLabel, slowCaseLabel); @@ -246,7 +247,7 @@ static bool tryCacheGetByID(ExecState* exec, JSValue baseValue, const Identifier // like the interpreter does, then add a check for recursion. CodeBlock* codeBlock = exec->codeBlock(); - JSGlobalData* globalData = &exec->globalData(); + VM* vm = &exec->vm(); if (isJSArray(baseValue) && propertyName == exec->propertyNames().length) { GPRReg baseGPR = static_cast<GPRReg>(stubInfo.patch.dfg.baseGPR); @@ -291,7 +292,7 @@ static bool tryCacheGetByID(ExecState* exec, JSValue baseValue, const Identifier emitRestoreScratch(stubJit, needToRestoreScratch, scratchGPR, success, fail, failureCases); - LinkBuffer patchBuffer(*globalData, &stubJit, codeBlock); + LinkBuffer patchBuffer(*vm, &stubJit, codeBlock); linkRestoreScratch(patchBuffer, needToRestoreScratch, stubInfo, success, fail, failureCases); @@ -323,13 +324,13 @@ static bool tryCacheGetByID(ExecState* exec, JSValue baseValue, const Identifier // Optimize self access. if (slot.slotBase() == baseValue) { if ((slot.cachedPropertyType() != PropertySlot::Value) - || !MacroAssembler::isCompactPtrAlignedAddressOffset(offsetRelativeToPatchedStorage(slot.cachedOffset()))) { + || !MacroAssembler::isCompactPtrAlignedAddressOffset(maxOffsetRelativeToPatchedStorage(slot.cachedOffset()))) { dfgRepatchCall(codeBlock, stubInfo.callReturnLocation, operationGetByIdBuildList); return true; } dfgRepatchByIdSelfAccess(codeBlock, stubInfo, structure, slot.cachedOffset(), operationGetByIdBuildList, true); - stubInfo.initGetByIdSelf(*globalData, codeBlock->ownerExecutable(), structure); + stubInfo.initGetByIdSelf(*vm, codeBlock->ownerExecutable(), structure); return true; } @@ -355,7 +356,7 @@ static bool tryCacheGetByID(ExecState* exec, JSValue baseValue, const Identifier replaceWithJump(repatchBuffer, stubInfo, stubInfo.stubRoutine->code().code()); repatchBuffer.relink(stubInfo.callReturnLocation, operationGetByIdProtoBuildList); - stubInfo.initGetByIdChain(*globalData, codeBlock->ownerExecutable(), structure, prototypeChain, count, true); + stubInfo.initGetByIdChain(*vm, codeBlock->ownerExecutable(), structure, prototypeChain, count, true); return true; } @@ -385,7 +386,7 @@ static bool tryBuildGetByIDList(ExecState* exec, JSValue baseValue, const Identi CodeBlock* codeBlock = exec->codeBlock(); JSCell* baseCell = baseValue.asCell(); Structure* structure = baseCell->structure(); - JSGlobalData* globalData = &exec->globalData(); + VM* vm = &exec->vm(); ASSERT(slot.slotBase().isObject()); @@ -399,7 +400,7 @@ static bool tryBuildGetByIDList(ExecState* exec, JSValue baseValue, const Identi listIndex = 0; } else if (stubInfo.accessType == access_get_by_id_self) { ASSERT(!stubInfo.stubRoutine); - polymorphicStructureList = new PolymorphicAccessStructureList(*globalData, codeBlock->ownerExecutable(), JITStubRoutine::createSelfManagedRoutine(stubInfo.callReturnLocation.labelAtOffset(stubInfo.patch.dfg.deltaCallToSlowCase)), stubInfo.u.getByIdSelf.baseObjectStructure.get(), true); + polymorphicStructureList = new PolymorphicAccessStructureList(*vm, codeBlock->ownerExecutable(), JITStubRoutine::createSelfManagedRoutine(stubInfo.callReturnLocation.labelAtOffset(stubInfo.patch.dfg.deltaCallToSlowCase)), stubInfo.u.getByIdSelf.baseObjectStructure.get(), true); stubInfo.initGetByIdSelfList(polymorphicStructureList, 1); listIndex = 1; } else { @@ -417,7 +418,7 @@ static bool tryBuildGetByIDList(ExecState* exec, JSValue baseValue, const Identi GPRReg resultGPR = static_cast<GPRReg>(stubInfo.patch.dfg.valueGPR); GPRReg scratchGPR = RegisterSet(stubInfo.patch.dfg.usedRegisters).getFreeGPR(); - CCallHelpers stubJit(globalData, codeBlock); + CCallHelpers stubJit(vm, codeBlock); MacroAssembler::Jump wrongStruct = stubJit.branchPtr(MacroAssembler::NotEqual, MacroAssembler::Address(baseGPR, JSCell::structureOffset()), MacroAssembler::TrustedImmPtr(structure)); @@ -506,7 +507,7 @@ static bool tryBuildGetByIDList(ExecState* exec, JSValue baseValue, const Identi isDirect = true; } - LinkBuffer patchBuffer(*globalData, &stubJit, codeBlock); + LinkBuffer patchBuffer(*vm, &stubJit, codeBlock); CodeLocationLabel lastProtoBegin; if (listIndex) @@ -529,12 +530,12 @@ static bool tryBuildGetByIDList(ExecState* exec, JSValue baseValue, const Identi ("DFG GetById polymorphic list access for %s, return point %p", toCString(*exec->codeBlock()).data(), stubInfo.callReturnLocation.labelAtOffset( stubInfo.patch.dfg.deltaCallToDone).executableAddress())), - *globalData, + *vm, codeBlock->ownerExecutable(), slot.cachedPropertyType() == PropertySlot::Getter || slot.cachedPropertyType() == PropertySlot::Custom); - polymorphicStructureList->list[listIndex].set(*globalData, codeBlock->ownerExecutable(), stubRoutine, structure, isDirect); + polymorphicStructureList->list[listIndex].set(*vm, codeBlock->ownerExecutable(), stubRoutine, structure, isDirect); RepatchBuffer repatchBuffer(codeBlock); repatchBuffer.relink( @@ -576,14 +577,14 @@ static bool tryBuildGetByIDProtoList(ExecState* exec, JSValue baseValue, const I Structure* structure = baseValue.asCell()->structure(); StructureChain* prototypeChain = structure->prototypeChain(exec); CodeBlock* codeBlock = exec->codeBlock(); - JSGlobalData* globalData = &exec->globalData(); + VM* vm = &exec->vm(); PolymorphicAccessStructureList* polymorphicStructureList; int listIndex = 1; if (stubInfo.accessType == access_get_by_id_chain) { ASSERT(!!stubInfo.stubRoutine); - polymorphicStructureList = new PolymorphicAccessStructureList(*globalData, codeBlock->ownerExecutable(), stubInfo.stubRoutine, stubInfo.u.getByIdChain.baseObjectStructure.get(), stubInfo.u.getByIdChain.chain.get(), true); + polymorphicStructureList = new PolymorphicAccessStructureList(*vm, codeBlock->ownerExecutable(), stubInfo.stubRoutine, stubInfo.u.getByIdChain.baseObjectStructure.get(), stubInfo.u.getByIdChain.chain.get(), true); stubInfo.stubRoutine.clear(); stubInfo.initGetByIdProtoList(polymorphicStructureList, 1); } else { @@ -602,7 +603,7 @@ static bool tryBuildGetByIDProtoList(ExecState* exec, JSValue baseValue, const I generateProtoChainAccessStub(exec, stubInfo, prototypeChain, count, offset, structure, stubInfo.callReturnLocation.labelAtOffset(stubInfo.patch.dfg.deltaCallToDone), lastProtoBegin, stubRoutine); - polymorphicStructureList->list[listIndex].set(*globalData, codeBlock->ownerExecutable(), stubRoutine, structure, true); + polymorphicStructureList->list[listIndex].set(*vm, codeBlock->ownerExecutable(), stubRoutine, structure, true); RepatchBuffer repatchBuffer(codeBlock); replaceWithJump(repatchBuffer, stubInfo, stubRoutine->code().code()); @@ -656,7 +657,7 @@ static void emitPutReplaceStub( CodeLocationLabel failureLabel, RefPtr<JITStubRoutine>& stubRoutine) { - JSGlobalData* globalData = &exec->globalData(); + VM* vm = &exec->vm(); GPRReg baseGPR = static_cast<GPRReg>(stubInfo.patch.dfg.baseGPR); #if USE(JSVALUE32_64) GPRReg valueTagGPR = static_cast<GPRReg>(stubInfo.patch.dfg.valueTagGPR); @@ -664,7 +665,7 @@ static void emitPutReplaceStub( GPRReg valueGPR = static_cast<GPRReg>(stubInfo.patch.dfg.valueGPR); GPRReg scratchGPR = RegisterSet(stubInfo.patch.dfg.usedRegisters).getFreeGPR(); bool needToRestoreScratch = false; -#if ENABLE(GGC) || ENABLE(WRITE_BARRIER_PROFILING) +#if ENABLE(WRITE_BARRIER_PROFILING) GPRReg scratchGPR2; const bool writeBarrierNeeded = true; #else @@ -688,7 +689,7 @@ static void emitPutReplaceStub( MacroAssembler::Address(baseGPR, JSCell::structureOffset()), MacroAssembler::TrustedImmPtr(structure)); -#if ENABLE(GGC) || ENABLE(WRITE_BARRIER_PROFILING) +#if ENABLE(WRITE_BARRIER_PROFILING) #if USE(JSVALUE64) scratchGPR2 = SpeculativeJIT::selectScratchGPR(baseGPR, valueGPR, scratchGPR); #else @@ -732,7 +733,7 @@ static void emitPutReplaceStub( failure = badStructure; } - LinkBuffer patchBuffer(*globalData, &stubJit, exec->codeBlock()); + LinkBuffer patchBuffer(*vm, &stubJit, exec->codeBlock()); patchBuffer.link(success, stubInfo.callReturnLocation.labelAtOffset(stubInfo.patch.dfg.deltaCallToDone)); patchBuffer.link(failure, failureLabel); @@ -756,7 +757,7 @@ static void emitPutTransitionStub( CodeLocationLabel failureLabel, RefPtr<JITStubRoutine>& stubRoutine) { - JSGlobalData* globalData = &exec->globalData(); + VM* vm = &exec->vm(); GPRReg baseGPR = static_cast<GPRReg>(stubInfo.patch.dfg.baseGPR); #if USE(JSVALUE32_64) @@ -771,7 +772,7 @@ static void emitPutTransitionStub( #endif allocator.lock(valueGPR); - CCallHelpers stubJit(globalData); + CCallHelpers stubJit(vm); GPRReg scratchGPR1 = allocator.allocateScratchGPR(); ASSERT(scratchGPR1 != baseGPR); @@ -779,7 +780,7 @@ static void emitPutTransitionStub( bool needSecondScratch = false; bool needThirdScratch = false; -#if ENABLE(GGC) || ENABLE(WRITE_BARRIER_PROFILING) +#if ENABLE(WRITE_BARRIER_PROFILING) needSecondScratch = true; #endif if (structure->outOfLineCapacity() != oldStructure->outOfLineCapacity() @@ -826,7 +827,7 @@ static void emitPutTransitionStub( } } -#if ENABLE(GGC) || ENABLE(WRITE_BARRIER_PROFILING) +#if ENABLE(WRITE_BARRIER_PROFILING) ASSERT(needSecondScratch); ASSERT(scratchGPR2 != InvalidGPRReg); // Must always emit this write barrier as the structure transition itself requires it @@ -839,7 +840,7 @@ static void emitPutTransitionStub( if (structure->outOfLineCapacity() != oldStructure->outOfLineCapacity()) { size_t newSize = structure->outOfLineCapacity() * sizeof(JSValue); - CopiedAllocator* copiedAllocator = &globalData->heap.storageAllocator(); + CopiedAllocator* copiedAllocator = &vm->heap.storageAllocator(); if (!oldStructure->outOfLineCapacity()) { stubJit.loadPtr(&copiedAllocator->m_currentRemaining, scratchGPR1); @@ -911,7 +912,7 @@ static void emitPutTransitionStub( slowPath.link(&stubJit); allocator.restoreReusedRegistersByPopping(stubJit); - ScratchBuffer* scratchBuffer = globalData->scratchBufferForSize(allocator.desiredScratchBufferSize()); + ScratchBuffer* scratchBuffer = vm->scratchBufferForSize(allocator.desiredScratchBufferSize()); allocator.preserveUsedRegistersToScratchBuffer(stubJit, scratchBuffer, scratchGPR1); #if USE(JSVALUE64) stubJit.setupArgumentsWithExecState(baseGPR, MacroAssembler::TrustedImmPtr(structure), MacroAssembler::TrustedImm32(slot.cachedOffset()), valueGPR); @@ -923,7 +924,7 @@ static void emitPutTransitionStub( successInSlowPath = stubJit.jump(); } - LinkBuffer patchBuffer(*globalData, &stubJit, exec->codeBlock()); + LinkBuffer patchBuffer(*vm, &stubJit, exec->codeBlock()); patchBuffer.link(success, stubInfo.callReturnLocation.labelAtOffset(stubInfo.patch.dfg.deltaCallToDone)); if (allocator.didReuseRegisters()) patchBuffer.link(failure, failureLabel); @@ -943,7 +944,7 @@ static void emitPutTransitionStub( oldStructure, structure, toCString(*exec->codeBlock()).data(), stubInfo.callReturnLocation.labelAtOffset( stubInfo.patch.dfg.deltaCallToDone).executableAddress())), - *globalData, + *vm, exec->codeBlock()->ownerExecutable(), structure->outOfLineCapacity() != oldStructure->outOfLineCapacity(), structure); @@ -952,7 +953,7 @@ static void emitPutTransitionStub( static bool tryCachePutByID(ExecState* exec, JSValue baseValue, const Identifier& ident, const PutPropertySlot& slot, StructureStubInfo& stubInfo, PutKind putKind) { CodeBlock* codeBlock = exec->codeBlock(); - JSGlobalData* globalData = &exec->globalData(); + VM* vm = &exec->vm(); if (!baseValue.isCell()) return false; @@ -1001,13 +1002,13 @@ static bool tryCachePutByID(ExecState* exec, JSValue baseValue, const Identifier CodeLocationLabel(stubInfo.stubRoutine->code().code())); repatchBuffer.relink(stubInfo.callReturnLocation, appropriateListBuildingPutByIdFunction(slot, putKind)); - stubInfo.initPutByIdTransition(*globalData, codeBlock->ownerExecutable(), oldStructure, structure, prototypeChain, putKind == Direct); + stubInfo.initPutByIdTransition(*vm, codeBlock->ownerExecutable(), oldStructure, structure, prototypeChain, putKind == Direct); return true; } dfgRepatchByIdSelfAccess(codeBlock, stubInfo, structure, slot.cachedOffset(), appropriateListBuildingPutByIdFunction(slot, putKind), false); - stubInfo.initPutByIdReplace(*globalData, codeBlock->ownerExecutable(), structure); + stubInfo.initPutByIdReplace(*vm, codeBlock->ownerExecutable(), structure); return true; } @@ -1024,7 +1025,7 @@ void dfgRepatchPutByID(ExecState* exec, JSValue baseValue, const Identifier& pro static bool tryBuildPutByIdList(ExecState* exec, JSValue baseValue, const Identifier& propertyName, const PutPropertySlot& slot, StructureStubInfo& stubInfo, PutKind putKind) { CodeBlock* codeBlock = exec->codeBlock(); - JSGlobalData* globalData = &exec->globalData(); + VM* vm = &exec->vm(); if (!baseValue.isCell()) return false; @@ -1076,7 +1077,7 @@ static bool tryBuildPutByIdList(ExecState* exec, JSValue baseValue, const Identi list->addAccess( PutByIdAccess::transition( - *globalData, codeBlock->ownerExecutable(), + *vm, codeBlock->ownerExecutable(), oldStructure, structure, prototypeChain, stubRoutine)); } else { @@ -1091,7 +1092,7 @@ static bool tryBuildPutByIdList(ExecState* exec, JSValue baseValue, const Identi list->addAccess( PutByIdAccess::replace( - *globalData, codeBlock->ownerExecutable(), + *vm, codeBlock->ownerExecutable(), structure, stubRoutine)); } @@ -1114,14 +1115,14 @@ void dfgBuildPutByIdList(ExecState* exec, JSValue baseValue, const Identifier& p dfgRepatchCall(exec->codeBlock(), stubInfo.callReturnLocation, appropriateGenericPutByIdFunction(slot, putKind)); } -static void linkSlowFor(RepatchBuffer& repatchBuffer, JSGlobalData* globalData, CallLinkInfo& callLinkInfo, CodeSpecializationKind kind) +static void linkSlowFor(RepatchBuffer& repatchBuffer, VM* vm, CallLinkInfo& callLinkInfo, CodeSpecializationKind kind) { if (kind == CodeForCall) { - repatchBuffer.relink(callLinkInfo.callReturnLocation, globalData->getCTIStub(virtualCallThunkGenerator).code()); + repatchBuffer.relink(callLinkInfo.callReturnLocation, vm->getCTIStub(virtualCallThunkGenerator).code()); return; } ASSERT(kind == CodeForConstruct); - repatchBuffer.relink(callLinkInfo.callReturnLocation, globalData->getCTIStub(virtualConstructThunkGenerator).code()); + repatchBuffer.relink(callLinkInfo.callReturnLocation, vm->getCTIStub(virtualConstructThunkGenerator).code()); } void dfgLinkFor(ExecState* exec, CallLinkInfo& callLinkInfo, CodeBlock* calleeCodeBlock, JSFunction* callee, MacroAssemblerCodePtr codePtr, CodeSpecializationKind kind) @@ -1129,35 +1130,35 @@ void dfgLinkFor(ExecState* exec, CallLinkInfo& callLinkInfo, CodeBlock* calleeCo ASSERT(!callLinkInfo.stub); CodeBlock* callerCodeBlock = exec->callerFrame()->codeBlock(); - JSGlobalData* globalData = callerCodeBlock->globalData(); + VM* vm = callerCodeBlock->vm(); RepatchBuffer repatchBuffer(callerCodeBlock); ASSERT(!callLinkInfo.isLinked()); - callLinkInfo.callee.set(exec->callerFrame()->globalData(), callLinkInfo.hotPathBegin, callerCodeBlock->ownerExecutable(), callee); - callLinkInfo.lastSeenCallee.set(exec->callerFrame()->globalData(), callerCodeBlock->ownerExecutable(), callee); + callLinkInfo.callee.set(exec->callerFrame()->vm(), callLinkInfo.hotPathBegin, callerCodeBlock->ownerExecutable(), callee); + callLinkInfo.lastSeenCallee.set(exec->callerFrame()->vm(), callerCodeBlock->ownerExecutable(), callee); repatchBuffer.relink(callLinkInfo.hotPathOther, codePtr); if (calleeCodeBlock) calleeCodeBlock->linkIncomingCall(&callLinkInfo); if (kind == CodeForCall) { - repatchBuffer.relink(callLinkInfo.callReturnLocation, globalData->getCTIStub(linkClosureCallThunkGenerator).code()); + repatchBuffer.relink(callLinkInfo.callReturnLocation, vm->getCTIStub(linkClosureCallThunkGenerator).code()); return; } ASSERT(kind == CodeForConstruct); - linkSlowFor(repatchBuffer, globalData, callLinkInfo, CodeForConstruct); + linkSlowFor(repatchBuffer, vm, callLinkInfo, CodeForConstruct); } void dfgLinkSlowFor(ExecState* exec, CallLinkInfo& callLinkInfo, CodeSpecializationKind kind) { CodeBlock* callerCodeBlock = exec->callerFrame()->codeBlock(); - JSGlobalData* globalData = callerCodeBlock->globalData(); + VM* vm = callerCodeBlock->vm(); RepatchBuffer repatchBuffer(callerCodeBlock); - linkSlowFor(repatchBuffer, globalData, callLinkInfo, kind); + linkSlowFor(repatchBuffer, vm, callLinkInfo, kind); } void dfgLinkClosureCall(ExecState* exec, CallLinkInfo& callLinkInfo, CodeBlock* calleeCodeBlock, Structure* structure, ExecutableBase* executable, MacroAssemblerCodePtr codePtr) @@ -1165,11 +1166,11 @@ void dfgLinkClosureCall(ExecState* exec, CallLinkInfo& callLinkInfo, CodeBlock* ASSERT(!callLinkInfo.stub); CodeBlock* callerCodeBlock = exec->callerFrame()->codeBlock(); - JSGlobalData* globalData = callerCodeBlock->globalData(); + VM* vm = callerCodeBlock->vm(); GPRReg calleeGPR = static_cast<GPRReg>(callLinkInfo.calleeGPR); - CCallHelpers stubJit(globalData, callerCodeBlock); + CCallHelpers stubJit(vm, callerCodeBlock); CCallHelpers::JumpList slowPath; @@ -1222,26 +1223,26 @@ void dfgLinkClosureCall(ExecState* exec, CallLinkInfo& callLinkInfo, CodeBlock* stubJit.restoreReturnAddressBeforeReturn(GPRInfo::nonArgGPR2); JITCompiler::Jump slow = stubJit.jump(); - LinkBuffer patchBuffer(*globalData, &stubJit, callerCodeBlock); + LinkBuffer patchBuffer(*vm, &stubJit, callerCodeBlock); patchBuffer.link(call, FunctionPtr(codePtr.executableAddress())); patchBuffer.link(done, callLinkInfo.callReturnLocation.labelAtOffset(0)); - patchBuffer.link(slow, CodeLocationLabel(globalData->getCTIStub(virtualCallThunkGenerator).code())); + patchBuffer.link(slow, CodeLocationLabel(vm->getCTIStub(virtualCallThunkGenerator).code())); RefPtr<ClosureCallStubRoutine> stubRoutine = adoptRef(new ClosureCallStubRoutine( FINALIZE_DFG_CODE( patchBuffer, ("DFG closure call stub for %s, return point %p, target %p (%s)", toCString(*callerCodeBlock).data(), callLinkInfo.callReturnLocation.labelAtOffset(0).executableAddress(), - codePtr.executableAddress(), toCString(*calleeCodeBlock).data())), - *globalData, callerCodeBlock->ownerExecutable(), structure, executable, callLinkInfo.codeOrigin)); + codePtr.executableAddress(), toCString(pointerDump(calleeCodeBlock)).data())), + *vm, callerCodeBlock->ownerExecutable(), structure, executable, callLinkInfo.codeOrigin)); RepatchBuffer repatchBuffer(callerCodeBlock); repatchBuffer.replaceWithJump( RepatchBuffer::startOfBranchPtrWithPatchOnRegister(callLinkInfo.hotPathBegin), CodeLocationLabel(stubRoutine->code().code())); - linkSlowFor(repatchBuffer, globalData, callLinkInfo, CodeForCall); + linkSlowFor(repatchBuffer, vm, callLinkInfo, CodeForCall); callLinkInfo.stub = stubRoutine.release(); @@ -1258,9 +1259,9 @@ void dfgResetGetByID(RepatchBuffer& repatchBuffer, StructureStubInfo& stubInfo) MacroAssembler::Address( static_cast<MacroAssembler::RegisterID>(stubInfo.patch.dfg.baseGPR), JSCell::structureOffset()), - reinterpret_cast<void*>(-1)); + reinterpret_cast<void*>(unusedPointer)); } - repatchBuffer.repatch(structureLabel, reinterpret_cast<void*>(-1)); + repatchBuffer.repatch(structureLabel, reinterpret_cast<void*>(unusedPointer)); #if USE(JSVALUE64) repatchBuffer.repatch(stubInfo.callReturnLocation.dataLabelCompactAtOffset(stubInfo.patch.dfg.deltaCallToLoadOrStore), 0); #else @@ -1292,9 +1293,9 @@ void dfgResetPutByID(RepatchBuffer& repatchBuffer, StructureStubInfo& stubInfo) MacroAssembler::Address( static_cast<MacroAssembler::RegisterID>(stubInfo.patch.dfg.baseGPR), JSCell::structureOffset()), - reinterpret_cast<void*>(-1)); + reinterpret_cast<void*>(unusedPointer)); } - repatchBuffer.repatch(structureLabel, reinterpret_cast<void*>(-1)); + repatchBuffer.repatch(structureLabel, reinterpret_cast<void*>(unusedPointer)); #if USE(JSVALUE64) repatchBuffer.repatch(stubInfo.callReturnLocation.dataLabel32AtOffset(stubInfo.patch.dfg.deltaCallToLoadOrStore), 0); #else |