diff options
Diffstat (limited to 'Source/JavaScriptCore/llint')
-rw-r--r-- | Source/JavaScriptCore/llint/LLIntSlowPaths.cpp | 12 | ||||
-rw-r--r-- | Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm | 8 |
2 files changed, 14 insertions, 6 deletions
diff --git a/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp b/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp index 5cba5ea70..b13e84b53 100644 --- a/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp +++ b/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp @@ -53,8 +53,16 @@ namespace JSC { namespace LLInt { JSGlobalData& globalData = exec->globalData(); \ NativeCallFrameTracer tracer(&globalData, exec) -#define LLINT_SET_PC_FOR_STUBS() \ - exec->setCurrentVPC(pc + 1) +#ifndef NDEBUG +#define LLINT_SET_PC_FOR_STUBS() do { \ + exec->codeBlock()->bytecodeOffset(pc); \ + exec->setCurrentVPC(pc + 1); \ + } while (false) +#else +#define LLINT_SET_PC_FOR_STUBS() do { \ + exec->setCurrentVPC(pc + 1); \ + } while (false) +#endif #define LLINT_BEGIN() \ LLINT_BEGIN_NO_SET_PC(); \ diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm b/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm index dd5ab674a..95b26d42f 100644 --- a/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm +++ b/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm @@ -1668,8 +1668,8 @@ macro nativeCallTrampoline(executableOffsetToFunction) storei CellTag, ScopeChain + TagOffset[cfr] storei t1, ScopeChain + PayloadOffset[cfr] if X86 - loadp JITStackFrame::globalData + 4[sp], t0 # Additional offset for return address - storep cfr, JSGlobalData::topCallFrame[t0] + loadp JITStackFrame::globalData + 4[sp], t3 # Additional offset for return address + storep cfr, JSGlobalData::topCallFrame[t3] peek 0, t1 storep t1, ReturnPC[cfr] move cfr, t2 # t2 = ecx @@ -1681,8 +1681,8 @@ macro nativeCallTrampoline(executableOffsetToFunction) addp 16 - 4, sp loadp JITStackFrame::globalData + 4[sp], t3 elsif ARMv7 - loadp JITStackFrame::globalData[sp], t1 - storep cfr, JSGlobalData::topCallFrame[t1] + loadp JITStackFrame::globalData[sp], t3 + storep cfr, JSGlobalData::topCallFrame[t3] move t0, t2 preserveReturnAddressAfterCall(t3) storep t3, ReturnPC[cfr] |