c07ecba9d4
Fix for CLoop on ppc64, ppc64le and s390x
139 lines
6.2 KiB
Diff
139 lines
6.2 KiB
Diff
diff -up webkitgtk-2.4.1/Source/JavaScriptCore/interpreter/ProtoCallFrame.h.cloop_fix webkitgtk-2.4.1/Source/JavaScriptCore/interpreter/ProtoCallFrame.h
|
|
--- webkitgtk-2.4.1/Source/JavaScriptCore/interpreter/ProtoCallFrame.h.cloop_fix 2014-04-14 08:40:44.000000000 +0200
|
|
+++ webkitgtk-2.4.1/Source/JavaScriptCore/interpreter/ProtoCallFrame.h 2014-04-30 16:10:49.120156216 +0200
|
|
@@ -36,7 +36,7 @@ struct ProtoCallFrame {
|
|
Register calleeValue;
|
|
Register argCountAndCodeOriginValue;
|
|
Register thisArg;
|
|
- size_t paddedArgCount;
|
|
+ uint32_t paddedArgCount;
|
|
JSValue *args;
|
|
|
|
void init(CodeBlock*, JSScope*, JSObject*, JSValue, int, JSValue* otherArgs = 0);
|
|
@@ -53,7 +53,7 @@ struct ProtoCallFrame {
|
|
int argumentCountIncludingThis() const { return argCountAndCodeOriginValue.payload(); }
|
|
int argumentCount() const { return argumentCountIncludingThis() - 1; }
|
|
void setArgumentCountIncludingThis(int count) { argCountAndCodeOriginValue.payload() = count; }
|
|
- void setPaddedArgsCount(size_t argCount) { paddedArgCount = argCount; }
|
|
+ void setPaddedArgsCount(uint32_t argCount) { paddedArgCount = argCount; }
|
|
|
|
void clearCurrentVPC() { argCountAndCodeOriginValue.tag() = 0; }
|
|
|
|
diff -up webkitgtk-2.4.1/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp.cloop_fix webkitgtk-2.4.1/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp
|
|
--- webkitgtk-2.4.1/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp.cloop_fix 2014-04-30 16:11:18.457540050 +0200
|
|
+++ webkitgtk-2.4.1/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp 2014-04-30 16:11:50.944965101 +0200
|
|
@@ -1354,7 +1354,7 @@ LLINT_SLOW_PATH_DECL(slow_path_get_from_
|
|
CodeBlock* codeBlock = exec->codeBlock();
|
|
ConcurrentJITLocker locker(codeBlock->m_lock);
|
|
pc[5].u.structure.set(exec->vm(), codeBlock->ownerExecutable(), scope->structure());
|
|
- pc[6].u.operand = slot.cachedOffset();
|
|
+ pc[6].u.pointer = reinterpret_cast<void*>(slot.cachedOffset());
|
|
}
|
|
}
|
|
|
|
@@ -1381,7 +1381,7 @@ LLINT_SLOW_PATH_DECL(slow_path_put_to_sc
|
|
if (slot.isCacheable() && slot.base() == scope && scope->structure()->propertyAccessesAreCacheable()) {
|
|
ConcurrentJITLocker locker(codeBlock->m_lock);
|
|
pc[5].u.structure.set(exec->vm(), codeBlock->ownerExecutable(), scope->structure());
|
|
- pc[6].u.operand = slot.cachedOffset();
|
|
+ pc[6].u.pointer = reinterpret_cast<void*>(slot.cachedOffset());
|
|
}
|
|
}
|
|
|
|
diff -up webkitgtk-2.4.1/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm.cloop_fix webkitgtk-2.4.1/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
|
|
--- webkitgtk-2.4.1/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm.cloop_fix 2014-04-14 08:40:44.000000000 +0200
|
|
+++ webkitgtk-2.4.1/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm 2014-04-30 16:12:35.648549985 +0200
|
|
@@ -282,7 +282,7 @@ macro doCallToJavaScript(makeCall, doRet
|
|
storep temp3, CodeBlock+4[cfr, temp1, 8]
|
|
btinz temp1, .copyHeaderLoop
|
|
|
|
- loadi ProtoCallFrame::argCountAndCodeOriginValue[protoCallFrame], temp2
|
|
+ loadi PayloadOffset + ProtoCallFrame::argCountAndCodeOriginValue[protoCallFrame], temp2
|
|
subi 1, temp2
|
|
loadi ProtoCallFrame::paddedArgCount[protoCallFrame], temp3
|
|
subi 1, temp3
|
|
@@ -2277,7 +2277,7 @@ macro loadWithStructureCheck(operand, sl
|
|
end
|
|
|
|
macro getProperty()
|
|
- loadisFromInstruction(6, t3)
|
|
+ loadpFromInstruction(6, t3)
|
|
loadPropertyAtVariableOffset(t3, t0, t1, t2)
|
|
valueProfile(t1, t2, 28, t0)
|
|
loadisFromInstruction(1, t0)
|
|
@@ -2297,7 +2297,7 @@ end
|
|
|
|
macro getClosureVar()
|
|
loadp JSVariableObject::m_registers[t0], t0
|
|
- loadisFromInstruction(6, t3)
|
|
+ loadpFromInstruction(6, t3)
|
|
loadp TagOffset[t0, t3, 8], t1
|
|
loadp PayloadOffset[t0, t3, 8], t2
|
|
valueProfile(t1, t2, 28, t0)
|
|
@@ -2356,7 +2356,7 @@ _llint_op_get_from_scope:
|
|
macro putProperty()
|
|
loadisFromInstruction(3, t1)
|
|
loadConstantOrVariable(t1, t2, t3)
|
|
- loadisFromInstruction(6, t1)
|
|
+ loadpFromInstruction(6, t1)
|
|
storePropertyAtVariableOffset(t1, t0, t2, t3)
|
|
end
|
|
|
|
@@ -2374,7 +2374,7 @@ macro putClosureVar()
|
|
loadisFromInstruction(3, t1)
|
|
loadConstantOrVariable(t1, t2, t3)
|
|
loadp JSVariableObject::m_registers[t0], t0
|
|
- loadisFromInstruction(6, t1)
|
|
+ loadpFromInstruction(6, t1)
|
|
storei t2, TagOffset[t0, t1, 8]
|
|
storei t3, PayloadOffset[t0, t1, 8]
|
|
end
|
|
diff -up webkitgtk-2.4.1/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm.cloop_fix webkitgtk-2.4.1/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
|
|
--- webkitgtk-2.4.1/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm.cloop_fix 2014-04-14 08:40:44.000000000 +0200
|
|
+++ webkitgtk-2.4.1/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm 2014-04-30 16:10:49.121156229 +0200
|
|
@@ -171,7 +171,7 @@ macro doCallToJavaScript(makeCall, doRet
|
|
storep temp3, CodeBlock[cfr, temp1, 8]
|
|
btinz temp1, .copyHeaderLoop
|
|
|
|
- loadi ProtoCallFrame::argCountAndCodeOriginValue[protoCallFrame], temp2
|
|
+ loadi PayloadOffset + ProtoCallFrame::argCountAndCodeOriginValue[protoCallFrame], temp2
|
|
subi 1, temp2
|
|
loadi ProtoCallFrame::paddedArgCount[protoCallFrame], temp3
|
|
subi 1, temp3
|
|
@@ -2047,7 +2047,7 @@ macro loadWithStructureCheck(operand, sl
|
|
end
|
|
|
|
macro getProperty()
|
|
- loadisFromInstruction(6, t1)
|
|
+ loadpFromInstruction(6, t1)
|
|
loadPropertyAtVariableOffset(t1, t0, t2)
|
|
valueProfile(t2, 7, t0)
|
|
loadisFromInstruction(1, t0)
|
|
@@ -2064,7 +2064,7 @@ end
|
|
|
|
macro getClosureVar()
|
|
loadp JSVariableObject::m_registers[t0], t0
|
|
- loadisFromInstruction(6, t1)
|
|
+ loadpFromInstruction(6, t1)
|
|
loadq [t0, t1, 8], t0
|
|
valueProfile(t0, 7, t1)
|
|
loadisFromInstruction(1, t1)
|
|
@@ -2121,7 +2121,7 @@ _llint_op_get_from_scope:
|
|
macro putProperty()
|
|
loadisFromInstruction(3, t1)
|
|
loadConstantOrVariable(t1, t2)
|
|
- loadisFromInstruction(6, t1)
|
|
+ loadpFromInstruction(6, t1)
|
|
storePropertyAtVariableOffset(t1, t0, t2)
|
|
end
|
|
|
|
@@ -2138,7 +2138,7 @@ macro putClosureVar()
|
|
loadisFromInstruction(3, t1)
|
|
loadConstantOrVariable(t1, t2)
|
|
loadp JSVariableObject::m_registers[t0], t0
|
|
- loadisFromInstruction(6, t1)
|
|
+ loadpFromInstruction(6, t1)
|
|
storeq t2, [t0, t1, 8]
|
|
end
|
|
|