Ignore:
Timestamp:
Aug 22, 2017, 8:50:50 AM (8 years ago)
Author:
[email protected]
Message:

[Win][Release] Crash when running testmasm executable.
https://bugs.webkit.org/show_bug.cgi?id=175772

Reviewed by Mark Lam.

We need to save and restore the modified registers in case one or more registers are callee saved
on the relevant platforms.

  • assembler/testmasm.cpp:

(JSC::testProbeReadsArgumentRegisters):
(JSC::testProbeWritesArgumentRegisters):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/assembler/testmasm.cpp

    r220958 r221012  
    178178        jit.emitFunctionPrologue();
    179179
     180        jit.push(GPRInfo::argumentGPR0);
     181        jit.push(GPRInfo::argumentGPR1);
     182        jit.push(GPRInfo::argumentGPR2);
     183        jit.push(GPRInfo::argumentGPR3);
     184
    180185        jit.move(CCallHelpers::TrustedImm32(testWord32(0)), GPRInfo::argumentGPR0);
    181186        jit.convertInt32ToDouble(GPRInfo::argumentGPR0, FPRInfo::fpRegT0);
     
    205210            CHECK_EQ(cpu.fpr(FPRInfo::fpRegT1), testWord32(1));
    206211        });
     212
     213        jit.pop(GPRInfo::argumentGPR3);
     214        jit.pop(GPRInfo::argumentGPR2);
     215        jit.pop(GPRInfo::argumentGPR1);
     216        jit.pop(GPRInfo::argumentGPR0);
     217
    207218        jit.emitFunctionEpilogue();
    208219        jit.ret();
     
    219230    compileAndRun<void>([&] (CCallHelpers& jit) {
    220231        jit.emitFunctionPrologue();
     232
     233        jit.push(GPRInfo::argumentGPR0);
     234        jit.push(GPRInfo::argumentGPR1);
     235        jit.push(GPRInfo::argumentGPR2);
     236        jit.push(GPRInfo::argumentGPR3);
    221237
    222238        // Pre-initialize with non-expected values.
     
    260276            CHECK_EQ(cpu.fpr<uint64_t>(FPRInfo::fpRegT1), testWord64(1));
    261277        });
     278
     279        jit.pop(GPRInfo::argumentGPR3);
     280        jit.pop(GPRInfo::argumentGPR2);
     281        jit.pop(GPRInfo::argumentGPR1);
     282        jit.pop(GPRInfo::argumentGPR0);
    262283
    263284        jit.emitFunctionEpilogue();
Note: See TracChangeset for help on using the changeset viewer.