diff --git a/js/src/jit/IonMacroAssembler.cpp b/js/src/jit/IonMacroAssembler.cpp index 2ce52b166bf2..fe5494379a37 100644 --- a/js/src/jit/IonMacroAssembler.cpp +++ b/js/src/jit/IonMacroAssembler.cpp @@ -1961,9 +1961,10 @@ MacroAssembler::spsMarkJit(SPSProfiler *p, Register framePtr, Register temp) // and won't be regenerated when SPS state changes. spsProfileEntryAddressSafe(p, 0, temp, &stackFull); + // Push a C++ frame with non-copy label storePtr(ImmPtr(enterJitLabel), Address(temp, ProfileEntry::offsetOfLabel())); storePtr(framePtr, Address(temp, ProfileEntry::offsetOfSpOrScript())); - store32(Imm32(ProfileEntry::NullPCOffset), Address(temp, ProfileEntry::offsetOfLineOrPc())); + store32(Imm32(0), Address(temp, ProfileEntry::offsetOfLineOrPc())); store32(Imm32(ProfileEntry::IS_CPP_ENTRY), Address(temp, ProfileEntry::offsetOfFlags())); /* Always increment the stack size, whether or not we actually pushed. */ diff --git a/js/src/jit/IonMacroAssembler.h b/js/src/jit/IonMacroAssembler.h index 4d609be9b65d..daa1568aac15 100644 --- a/js/src/jit/IonMacroAssembler.h +++ b/js/src/jit/IonMacroAssembler.h @@ -1086,10 +1086,11 @@ class MacroAssembler : public MacroAssemblerSpecific Label stackFull; spsProfileEntryAddress(p, 0, temp, &stackFull); + // Push a JS frame with a copy label storePtr(ImmPtr(str), Address(temp, ProfileEntry::offsetOfLabel())); storePtr(ImmGCPtr(s), Address(temp, ProfileEntry::offsetOfSpOrScript())); store32(Imm32(ProfileEntry::NullPCOffset), Address(temp, ProfileEntry::offsetOfLineOrPc())); - store32(Imm32(0), Address(temp, ProfileEntry::offsetOfFlags())); + store32(Imm32(ProfileEntry::FRAME_LABEL_COPY), Address(temp, ProfileEntry::offsetOfFlags())); /* Always increment the stack size, whether or not we actually pushed. */ bind(&stackFull); @@ -1104,6 +1105,7 @@ class MacroAssembler : public MacroAssemblerSpecific Label stackFull; spsProfileEntryAddressSafe(p, 0, temp, &stackFull); + // Push a JS frame with a copy label loadPtr(str, temp2); storePtr(temp2, Address(temp, ProfileEntry::offsetOfLabel())); @@ -1114,7 +1116,7 @@ class MacroAssembler : public MacroAssemblerSpecific // (See probes::EnterScript, which calls spsProfiler.enter, which pushes an entry // with 0 pcIdx). store32(Imm32(0), Address(temp, ProfileEntry::offsetOfLineOrPc())); - store32(Imm32(0), Address(temp, ProfileEntry::offsetOfFlags())); + store32(Imm32(ProfileEntry::FRAME_LABEL_COPY), Address(temp, ProfileEntry::offsetOfFlags())); /* Always increment the stack size, whether or not we actually pushed. */ bind(&stackFull);