Changeset 221832 in webkit for trunk/Source/JavaScriptCore/jit/AssemblyHelpers.cpp
- Timestamp:
- Sep 9, 2017, 5:21:55 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/jit/AssemblyHelpers.cpp
r221823 r221832 51 51 } 52 52 53 // FIXME: remove this when we fix https://bugs.webkit.org/show_bug.cgi?id=175145. 53 54 Vector<BytecodeAndMachineOffset>& AssemblyHelpers::decodedCodeMapFor(CodeBlock* codeBlock) 54 55 { … … 821 822 #endif // ENABLE(WEBASSEMBLY) 822 823 823 void AssemblyHelpers::debugCall(VM& vm, V_DebugOperation_EPP function, void* argument)824 {825 size_t scratchSize = sizeof(EncodedJSValue) * (GPRInfo::numberOfRegisters + FPRInfo::numberOfRegisters);826 ScratchBuffer* scratchBuffer = vm.scratchBufferForSize(scratchSize);827 EncodedJSValue* buffer = static_cast<EncodedJSValue*>(scratchBuffer->dataBuffer());828 829 for (unsigned i = 0; i < GPRInfo::numberOfRegisters; ++i) {830 #if USE(JSVALUE64)831 store64(GPRInfo::toRegister(i), buffer + i);832 #else833 store32(GPRInfo::toRegister(i), buffer + i);834 #endif835 }836 837 for (unsigned i = 0; i < FPRInfo::numberOfRegisters; ++i) {838 move(TrustedImmPtr(buffer + GPRInfo::numberOfRegisters + i), GPRInfo::regT0);839 storeDouble(FPRInfo::toRegister(i), GPRInfo::regT0);840 }841 842 // Tell GC mark phase how much of the scratch buffer is active during call.843 move(TrustedImmPtr(scratchBuffer->addressOfActiveLength()), GPRInfo::regT0);844 storePtr(TrustedImmPtr(scratchSize), GPRInfo::regT0);845 846 #if CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)847 move(TrustedImmPtr(buffer), GPRInfo::argumentGPR2);848 move(TrustedImmPtr(argument), GPRInfo::argumentGPR1);849 move(GPRInfo::callFrameRegister, GPRInfo::argumentGPR0);850 GPRReg scratch = selectScratchGPR(GPRInfo::argumentGPR0, GPRInfo::argumentGPR1, GPRInfo::argumentGPR2);851 #elif CPU(X86)852 poke(GPRInfo::callFrameRegister, 0);853 poke(TrustedImmPtr(argument), 1);854 poke(TrustedImmPtr(buffer), 2);855 GPRReg scratch = GPRInfo::regT0;856 #else857 #error "JIT not supported on this platform."858 #endif859 move(TrustedImmPtr(reinterpret_cast<void*>(function)), scratch);860 call(scratch);861 862 move(TrustedImmPtr(scratchBuffer->addressOfActiveLength()), GPRInfo::regT0);863 storePtr(TrustedImmPtr(0), GPRInfo::regT0);864 865 for (unsigned i = 0; i < FPRInfo::numberOfRegisters; ++i) {866 move(TrustedImmPtr(buffer + GPRInfo::numberOfRegisters + i), GPRInfo::regT0);867 loadDouble(GPRInfo::regT0, FPRInfo::toRegister(i));868 }869 for (unsigned i = 0; i < GPRInfo::numberOfRegisters; ++i) {870 #if USE(JSVALUE64)871 load64(buffer + i, GPRInfo::toRegister(i));872 #else873 load32(buffer + i, GPRInfo::toRegister(i));874 #endif875 }876 }877 878 824 void AssemblyHelpers::copyCalleeSavesToVMEntryFrameCalleeSavesBufferImpl(GPRReg calleeSavesBuffer) 879 825 {
Note:
See TracChangeset
for help on using the changeset viewer.