summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2017-11-21 20:50:34 +0300
committerIgor Pashev <pashev.igor@gmail.com>2017-11-21 20:50:34 +0300
commit46c093eaeae3365f46124655c19df0762eb80caf (patch)
tree6afe1d23b75d3cfa2d222b31744b79dc494f4084
parent9ccbb8b53bffc27420ad8b360c581668bb8837bd (diff)
downloadqt5webkit-46c093eaeae3365f46124655c19df0762eb80caf.tar.gz
Update Dyson patches (might not work yet)
-rw-r--r--debian/patches/dyson-MachineStackMarker-stackPointer.patch89
-rw-r--r--debian/patches/dyson-MathExtras.patch29
-rw-r--r--debian/patches/dyson-solaris-amd64-memory-layout.patch189
-rw-r--r--debian/patches/dyson-use-system-malloc.patch14
-rw-r--r--debian/patches/dyson-yield.patch25
-rw-r--r--debian/patches/series3
6 files changed, 78 insertions, 271 deletions
diff --git a/debian/patches/dyson-MachineStackMarker-stackPointer.patch b/debian/patches/dyson-MachineStackMarker-stackPointer.patch
deleted file mode 100644
index fe86514..0000000
--- a/debian/patches/dyson-MachineStackMarker-stackPointer.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-Index: qt5webkit/Source/JavaScriptCore/heap/MachineStackMarker.cpp
-===================================================================
---- qt5webkit.orig/Source/JavaScriptCore/heap/MachineStackMarker.cpp 2014-02-02 00:37:54.000000000 +0400
-+++ qt5webkit/Source/JavaScriptCore/heap/MachineStackMarker.cpp 2014-04-28 14:04:11.798389583 +0400
-@@ -20,6 +20,9 @@
- */
-
- #include "config.h"
-+#if OS(SOLARIS)
-+#undef _FILE_OFFSET_BITS
-+#endif
- #include "MachineStackMarker.h"
-
- #include "ConservativeRoots.h"
-@@ -49,6 +52,10 @@
- #include <unistd.h>
-
- #if OS(SOLARIS)
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <fcntl.h>
-+#include <procfs.h>
- #include <thread.h>
- #else
- #include <pthread.h>
-@@ -317,6 +324,7 @@
- #error Need a thread register struct for this platform
- #endif
-
-+#if !OS(SOLARIS)
- static size_t getPlatformThreadRegisters(const PlatformThread& platformThread, PlatformThreadRegisters& regs)
- {
- #if OS(DARWIN)
-@@ -383,6 +391,7 @@
- #error Need a way to get thread registers on this platform
- #endif
- }
-+#endif
-
- static inline void* otherThreadStackPointer(const PlatformThreadRegisters& regs)
- {
-@@ -446,6 +455,7 @@
- #endif
- }
-
-+#if !OS(SOLARIS)
- static void freePlatformThreadRegisters(PlatformThreadRegisters& regs)
- {
- #if USE(PTHREADS) && !OS(WINDOWS) && !OS(DARWIN) && !OS(QNX)
-@@ -454,20 +464,37 @@
- UNUSED_PARAM(regs);
- #endif
- }
-+#endif
-
- void MachineThreads::gatherFromOtherThread(ConservativeRoots& conservativeRoots, Thread* thread)
- {
-+#if OS(SOLARIS)
-+ struct lwpstatus lwp;
-+ char procfile[64];
-+ int fd;
-+ snprintf(procfile, 64, "/proc/self/lwp/%u/lwpstatus", thread->platformThread);
-+ fd = open(procfile, O_RDONLY, 0);
-+ if (fd == -1) {
-+ fprintf(stderr, "%s: %s\n", procfile, strerror(errno));
-+ abort();
-+ }
-+ pread(fd, &lwp, sizeof(lwp), 0);
-+ close(fd);
-+ void* stackPointer = (void*)lwp.pr_reg[REG_SP];
-+#else
- PlatformThreadRegisters regs;
- size_t regSize = getPlatformThreadRegisters(thread->platformThread, regs);
-
- conservativeRoots.add(static_cast<void*>(&regs), static_cast<void*>(reinterpret_cast<char*>(&regs) + regSize));
-
- void* stackPointer = otherThreadStackPointer(regs);
-+
-+ freePlatformThreadRegisters(regs);
-+#endif
-+
- void* stackBase = thread->stackBase;
- swapIfBackwards(stackPointer, stackBase);
- conservativeRoots.add(stackPointer, stackBase);
--
-- freePlatformThreadRegisters(regs);
- }
-
- void MachineThreads::gatherConservativeRoots(ConservativeRoots& conservativeRoots, void* stackCurrent)
diff --git a/debian/patches/dyson-MathExtras.patch b/debian/patches/dyson-MathExtras.patch
deleted file mode 100644
index e375228..0000000
--- a/debian/patches/dyson-MathExtras.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Index: qtwebkit-opensource-src-5.2.1+dfsg/Source/WTF/wtf/MathExtras.h
-===================================================================
---- qtwebkit-opensource-src-5.2.1+dfsg.orig/Source/WTF/wtf/MathExtras.h 2014-02-02 00:37:41.000000000 +0400
-+++ qtwebkit-opensource-src-5.2.1+dfsg/Source/WTF/wtf/MathExtras.h 2014-04-28 13:25:25.330249107 +0400
-@@ -88,24 +88,6 @@
-
- #endif
-
--#if OS(SOLARIS)
--
--namespace std {
--
--#ifndef isfinite
--inline bool isfinite(double x) { return finite(x) && !isnand(x); }
--#endif
--#ifndef signbit
--inline bool signbit(double x) { return copysign(1.0, x) < 0; }
--#endif
--#ifndef isinf
--inline bool isinf(double x) { return !finite(x) && !isnand(x); }
--#endif
--
--} // namespace std
--
--#endif
--
- #if OS(OPENBSD)
-
- namespace std {
diff --git a/debian/patches/dyson-solaris-amd64-memory-layout.patch b/debian/patches/dyson-solaris-amd64-memory-layout.patch
index 4a4cffe..0072fdc 100644
--- a/debian/patches/dyson-solaris-amd64-memory-layout.patch
+++ b/debian/patches/dyson-solaris-amd64-memory-layout.patch
@@ -9,45 +9,22 @@ Index: qt5webkit/Source/WTF/wtf/Platform.h
===================================================================
--- qt5webkit.orig/Source/WTF/wtf/Platform.h
+++ qt5webkit/Source/WTF/wtf/Platform.h
-@@ -433,6 +433,15 @@
+@@ -409,6 +409,10 @@
#define WTF_OS_SOLARIS 1
#endif
+#if CPU(X86_64) && OS(SOLARIS)
+# define WTF_OS_SOLARIS_AMD64 1
-+# endif
-+
-+// Let's port LLInt first:
-+#if OS(SOLARIS_AMD64)
-+#define ENABLE_JIT 0
+#endif
+
- /* OS(WINCE) - Windows CE; note that for this platform OS(WINDOWS) is also defined */
- #if defined(_WIN32_WCE)
- #define WTF_OS_WINCE 1
-@@ -815,7 +824,7 @@
- low-level interpreter. */
- #if !defined(ENABLE_LLINT) \
- && ENABLE(JIT) \
-- && (OS(DARWIN) || OS(LINUX)) \
-+ && (OS(DARWIN) || OS(LINUX) || OS(SOLARIS)) \
- && (PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(GTK) || PLATFORM(QT)) \
- && (CPU(X86) || CPU(X86_64) || CPU(ARM_THUMB2) || CPU(ARM_TRADITIONAL) || CPU(MIPS) || CPU(SH4))
- #define ENABLE_LLINT 1
-@@ -823,7 +832,7 @@
-
- #if !defined(ENABLE_DFG_JIT) && ENABLE(JIT) && !COMPILER(MSVC)
- /* Enable the DFG JIT on X86 and X86_64. Only tested on Mac and GNU/Linux. */
--#if (CPU(X86) || CPU(X86_64)) && (OS(DARWIN) || OS(LINUX))
-+#if (CPU(X86) || CPU(X86_64)) && (OS(DARWIN) || OS(LINUX) || OS(SOLARIS))
- #define ENABLE_DFG_JIT 1
- #endif
- /* Enable the DFG JIT on ARMv7. Only tested on iOS and Qt Linux. */
+ /* OS(WINDOWS) - Any version of Windows */
+ #if defined(WIN32) || defined(_WIN32)
+ #define WTF_OS_WINDOWS 1
Index: qt5webkit/Source/JavaScriptCore/runtime/JSCJSValue.h
===================================================================
--- qt5webkit.orig/Source/JavaScriptCore/runtime/JSCJSValue.h
+++ qt5webkit/Source/JavaScriptCore/runtime/JSCJSValue.h
-@@ -387,6 +387,14 @@ private:
+@@ -427,6 +427,14 @@ public:
// alignment for a GC cell, and in the zero page).
#define ValueEmpty 0x0ll
#define ValueDeleted 0x4ll
@@ -61,12 +38,12 @@ Index: qt5webkit/Source/JavaScriptCore/runtime/JSCJSValue.h
+
#endif
- EncodedValueDescriptor u;
+ private:
Index: qt5webkit/Source/JavaScriptCore/runtime/JSCJSValueInlines.h
===================================================================
--- qt5webkit.orig/Source/JavaScriptCore/runtime/JSCJSValueInlines.h
+++ qt5webkit/Source/JavaScriptCore/runtime/JSCJSValueInlines.h
-@@ -336,6 +336,13 @@ inline bool JSValue::asBoolean() const
+@@ -341,6 +341,13 @@ inline bool JSValue::asBoolean() const
#else // !USE(JSVALUE32_64) i.e. USE(JSVALUE64)
@@ -80,7 +57,7 @@ Index: qt5webkit/Source/JavaScriptCore/runtime/JSCJSValueInlines.h
// 0x0 can never occur naturally because it has a tag of 00, indicating a pointer value, but a payload of 0x0, which is in the (invalid) zero page.
inline JSValue::JSValue()
{
-@@ -412,6 +419,10 @@ inline int32_t JSValue::asInt32() const
+@@ -417,6 +424,10 @@ inline int32_t JSValue::asInt32() const
inline bool JSValue::isDouble() const
{
@@ -91,7 +68,7 @@ Index: qt5webkit/Source/JavaScriptCore/runtime/JSCJSValueInlines.h
return isNumber() && !isInt32();
}
-@@ -437,22 +448,38 @@ inline JSValue::JSValue(JSFalseTag)
+@@ -442,22 +453,38 @@ inline JSValue::JSValue(JSFalseTag)
inline bool JSValue::isUndefinedOrNull() const
{
@@ -130,7 +107,7 @@ Index: qt5webkit/Source/JavaScriptCore/runtime/JSCJSValueInlines.h
return (u.asInt64 & TagTypeNumber) == TagTypeNumber;
}
-@@ -483,6 +510,10 @@ inline double JSValue::asDouble() const
+@@ -489,6 +516,10 @@ inline double JSValue::asDouble() const
inline bool JSValue::isNumber() const
{
@@ -145,7 +122,7 @@ Index: qt5webkit/Source/JavaScriptCore/jit/JITInlines.h
===================================================================
--- qt5webkit.orig/Source/JavaScriptCore/jit/JITInlines.h
+++ qt5webkit/Source/JavaScriptCore/jit/JITInlines.h
-@@ -799,7 +799,14 @@ ALWAYS_INLINE void JIT::emitInitRegister
+@@ -1241,7 +1241,14 @@ ALWAYS_INLINE void JIT::emitInitRegister
ALWAYS_INLINE JIT::Jump JIT::emitJumpIfJSCell(RegisterID reg)
{
@@ -164,17 +141,7 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
===================================================================
--- qt5webkit.orig/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
+++ qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
-@@ -31,6 +31,9 @@ const ValueFalse = TagBitTypeOther
- const ValueTrue = TagBitTypeOther | TagBitBool | 1
- const ValueUndefined = TagBitTypeOther | TagBitUndefined
- const ValueNull = TagBitTypeOther
-+if SOLARIS_AMD64
-+const solarisAMD64StackBottom = 0xFFFF800000000000
-+end
-
- # Utilities.
- macro jumpToInstruction()
-@@ -167,12 +170,21 @@ end
+@@ -389,12 +389,21 @@ end
macro loadConstantOrVariableInt32(index, value, slow)
loadConstantOrVariable(index, value)
@@ -195,22 +162,8 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
+end
end
- macro writeBarrier(value)
-@@ -280,7 +292,13 @@ _llint_op_convert_this:
- traceExecution()
- loadisFromInstruction(1, t0)
- loadq [cfr, t0, 8], t0
-+if SOLARIS_AMD64
-+ bqaeq t0, solarisAMD64StackBottom, .opConvertThisSolarisAMD64StackPointer
-+end
- btqnz t0, tagMask, .opConvertThisSlow
-+if SOLARIS_AMD64
-+.opConvertThisSolarisAMD64StackPointer:
-+end
- loadp JSCell::m_structure[t0], t0
- bbb Structure::m_typeInfo + TypeInfo::m_type[t0], ObjectType, .opConvertThisSlow
- loadpFromInstruction(2, t1)
-@@ -364,7 +382,13 @@ _llint_op_neq:
+ macro writeBarrierOnOperand(cellOperand)
+@@ -715,7 +724,13 @@ _llint_op_neq:
macro equalNullComparison()
loadisFromInstruction(2, t0)
loadq [cfr, t0, 8], t0
@@ -221,10 +174,10 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
+if SOLARIS_AMD64
+.solarisAMD64StackPointer:
+end
- loadp JSCell::m_structure[t0], t2
- btbnz Structure::m_typeInfo + TypeInfo::m_flags[t2], MasqueradesAsUndefined, .masqueradesAsUndefined
+ btbnz JSCell::m_flags[t0], MasqueradesAsUndefined, .masqueradesAsUndefined
move 0, t0
-@@ -404,6 +428,10 @@ macro strictEq(equalityOperation, slowPa
+ jmp .done
+@@ -755,6 +770,10 @@ macro strictEq(equalityOperation, slowPa
loadisFromInstruction(2, t2)
loadConstantOrVariable(t0, t1)
loadConstantOrVariable(t2, t0)
@@ -235,7 +188,7 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
move t0, t2
orq t1, t2
btqz t2, tagMask, .slow
-@@ -440,6 +468,9 @@ macro preOp(arithmeticOperation, slowPat
+@@ -791,6 +810,9 @@ macro preOp(arithmeticOperation, slowPat
traceExecution()
loadisFromInstruction(1, t0)
loadq [cfr, t0, 8], t1
@@ -245,7 +198,7 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
bqb t1, tagTypeNumber, .slow
arithmeticOperation(t1, .slow)
orq tagTypeNumber, t1
-@@ -468,6 +499,9 @@ _llint_op_to_number:
+@@ -819,6 +841,9 @@ _llint_op_to_number:
loadisFromInstruction(2, t0)
loadisFromInstruction(1, t1)
loadConstantOrVariable(t0, t2)
@@ -255,7 +208,7 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
bqaeq t2, tagTypeNumber, .opToNumberIsImmediate
btqz t2, tagTypeNumber, .opToNumberSlow
.opToNumberIsImmediate:
-@@ -484,6 +518,9 @@ _llint_op_negate:
+@@ -851,6 +876,9 @@ _llint_op_negate:
loadisFromInstruction(2, t0)
loadisFromInstruction(1, t1)
loadConstantOrVariable(t0, t2)
@@ -265,7 +218,7 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
bqb t2, tagTypeNumber, .opNegateNotInt
btiz t2, 0x7fffffff, .opNegateSlow
negi t2
-@@ -506,7 +543,13 @@ macro binaryOpCustomStore(integerOperati
+@@ -873,7 +901,13 @@ macro binaryOpCustomStore(integerOperati
loadisFromInstruction(2, t2)
loadConstantOrVariable(t0, t1)
loadConstantOrVariable(t2, t0)
@@ -279,7 +232,7 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
bqb t1, tagTypeNumber, .op2NotInt
loadisFromInstruction(1, t2)
integerOperationAndStore(t1, t0, .slow, t2)
-@@ -515,6 +558,9 @@ macro binaryOpCustomStore(integerOperati
+@@ -882,6 +916,9 @@ macro binaryOpCustomStore(integerOperati
.op1NotInt:
# First operand is definitely not an int, the second operand could be anything.
btqz t0, tagTypeNumber, .slow
@@ -289,7 +242,7 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
bqaeq t1, tagTypeNumber, .op1NotIntOp2Int
btqz t1, tagTypeNumber, .slow
addq tagTypeNumber, t1
-@@ -535,6 +581,9 @@ macro binaryOpCustomStore(integerOperati
+@@ -902,6 +939,9 @@ macro binaryOpCustomStore(integerOperati
.op2NotInt:
# First operand is definitely an int, the second is definitely not.
loadisFromInstruction(1, t2)
@@ -299,7 +252,7 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
btqz t1, tagTypeNumber, .slow
ci2d t0, ft0
addq tagTypeNumber, t1
-@@ -624,6 +673,10 @@ macro bitOp(operation, slowPath, advance
+@@ -996,6 +1036,10 @@ macro bitOp(operation, slowPath, advance
loadisFromInstruction(1, t3)
loadConstantOrVariable(t0, t1)
loadConstantOrVariable(t2, t0)
@@ -309,10 +262,10 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
+end
bqb t0, tagTypeNumber, .slow
bqb t1, tagTypeNumber, .slow
- operation(t1, t0, .slow)
-@@ -717,6 +770,9 @@ _llint_op_instanceof:
- loadp JSCell::m_structure[t2], t2
- loadq Structure::m_prototype[t2], t2
+ operation(t1, t0)
+@@ -1107,6 +1151,9 @@ _llint_op_instanceof:
+ loadStructureAndClobberFirstArg(t2, t3)
+ loadq Structure::m_prototype[t3], t2
bqeq t2, t1, .opInstanceofDone
+if SOLARIS_AMD64
+ bqaeq t2, solarisAMD64StackBottom, .opInstanceofLoop
@@ -320,7 +273,7 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
btqz t2, tagMask, .opInstanceofLoop
move 0, t0
-@@ -735,6 +791,9 @@ _llint_op_is_undefined:
+@@ -1130,6 +1177,9 @@ _llint_op_is_undefined:
loadisFromInstruction(2, t1)
loadisFromInstruction(1, t2)
loadConstantOrVariable(t1, t0)
@@ -330,7 +283,7 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
btqz t0, tagMask, .opIsUndefinedCell
cqeq t0, ValueUndefined, t3
orq ValueFalse, t3
-@@ -772,6 +831,12 @@ _llint_op_is_number:
+@@ -1167,6 +1217,12 @@ _llint_op_is_number:
loadisFromInstruction(2, t1)
loadisFromInstruction(1, t2)
loadConstantOrVariable(t1, t0)
@@ -343,7 +296,7 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
tqnz t0, tagTypeNumber, t1
orq ValueFalse, t1
storeq t1, [cfr, t2, 8]
-@@ -783,7 +848,13 @@ _llint_op_is_string:
+@@ -1178,7 +1234,13 @@ _llint_op_is_string:
loadisFromInstruction(2, t1)
loadisFromInstruction(1, t2)
loadConstantOrVariable(t1, t0)
@@ -354,10 +307,10 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
+if SOLARIS_AMD64
+.opIsStringSolarisAMD64StackPointer:
+end
- loadp JSCell::m_structure[t0], t0
- cbeq Structure::m_typeInfo + TypeInfo::m_type[t0], StringType, t1
+ cbeq JSCell::m_type[t0], StringType, t1
orq ValueFalse, t1
-@@ -1150,6 +1221,9 @@ _llint_op_put_by_val:
+ storeq t1, [cfr, t2, 8]
+@@ -1504,6 +1566,9 @@ macro putByVal(slowPath)
contiguousPutByVal(
macro (operand, scratch, address)
loadConstantOrVariable(operand, scratch)
@@ -367,7 +320,7 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
bpb scratch, tagTypeNumber, .opPutByValSlow
storep scratch, address
end)
-@@ -1159,6 +1233,9 @@ _llint_op_put_by_val:
+@@ -1513,6 +1578,9 @@ macro putByVal(slowPath)
contiguousPutByVal(
macro (operand, scratch, address)
loadConstantOrVariable(operand, scratch)
@@ -377,7 +330,7 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
bqb scratch, tagTypeNumber, .notInt
ci2d scratch, ft0
jmp .ready
-@@ -1237,7 +1314,13 @@ macro equalNull(cellHandler, immediateHa
+@@ -1592,7 +1660,13 @@ macro equalNull(cellHandler, immediateHa
loadisFromInstruction(1, t0)
assertNotConstant(t0)
loadq [cfr, t0, 8], t0
@@ -388,10 +341,10 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
+if SOLARIS_AMD64
+.solarisAMD64StackPointer:
+end
- loadp JSCell::m_structure[t0], t2
- cellHandler(t2, Structure::m_typeInfo + TypeInfo::m_flags[t2], .target)
+ loadStructureWithScratch(t0, t2, t1)
+ cellHandler(t2, JSCell::m_flags[t0], .target)
dispatch(3)
-@@ -1295,6 +1378,10 @@ macro compare(integerCompare, doubleComp
+@@ -1650,6 +1724,10 @@ macro compare(integerCompare, doubleComp
loadisFromInstruction(2, t3)
loadConstantOrVariable(t2, t0)
loadConstantOrVariable(t3, t1)
@@ -402,9 +355,9 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
bqb t0, tagTypeNumber, .op1NotInt
bqb t1, tagTypeNumber, .op2NotInt
integerCompare(t0, t1, .jumpTarget)
-@@ -1342,6 +1429,9 @@ _llint_op_switch_imm:
+@@ -1697,6 +1775,9 @@ _llint_op_switch_imm:
muli sizeof SimpleJumpTable, t3 # FIXME: would be nice to peephole this!
- loadp CodeBlock::RareData::m_immediateSwitchJumpTables + VectorBufferOffset[t2], t2
+ loadp CodeBlock::RareData::m_switchJumpTables + VectorBufferOffset[t2], t2
addp t3, t2
+if SOLARIS_AMD64
+ bqaeq t1, solarisAMD64StackBottom, .opSwitchImmFallThrough
@@ -412,9 +365,9 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
bqb t1, tagTypeNumber, .opSwitchImmNotInt
subi SimpleJumpTable::min[t2], t1
biaeq t1, SimpleJumpTable::branchOffsets + VectorSizeOffset[t2], .opSwitchImmFallThrough
-@@ -1370,7 +1460,13 @@ _llint_op_switch_char:
+@@ -1725,7 +1806,13 @@ _llint_op_switch_char:
muli sizeof SimpleJumpTable, t3
- loadp CodeBlock::RareData::m_characterSwitchJumpTables + VectorBufferOffset[t2], t2
+ loadp CodeBlock::RareData::m_switchJumpTables + VectorBufferOffset[t2], t2
addp t3, t2
+if SOLARIS_AMD64
+ bqaeq t1, solarisAMD64StackBottom, .opSwitchCharSolarisAMD64StackPointer
@@ -423,38 +376,24 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
+if SOLARIS_AMD64
+.opSwitchCharSolarisAMD64StackPointer:
+end
- loadp JSCell::m_structure[t1], t0
- bbneq Structure::m_typeInfo + TypeInfo::m_type[t0], StringType, .opSwitchCharFallThrough
+ bbneq JSCell::m_type[t1], StringType, .opSwitchCharFallThrough
bineq JSString::m_length[t1], 1, .opSwitchCharFallThrough
-@@ -1414,7 +1510,13 @@ macro arrayProfileForCall()
- if VALUE_PROFILER
- loadisFromInstruction(3, t3)
- loadq ThisArgumentOffset[cfr, t3, 8], t0
+ loadp JSString::m_value[t1], t0
+@@ -1756,7 +1843,13 @@ macro arrayProfileForCall()
+ loadisFromInstruction(4, t3)
+ negp t3
+ loadq ThisArgumentOffset[cfr, t3, 8], t0
+if SOLARIS_AMD64
+ bqaeq t0, solarisAMD64StackBottom, .solarisAMD64StackPointer
+end
- btqnz t0, tagMask, .done
+ btqnz t0, tagMask, .done
+if SOLARIS_AMD64
+.solarisAMD64StackPointer:
+end
- loadp JSCell::m_structure[t0], t0
- loadpFromInstruction(5, t1)
- storep t0, ArrayProfile::m_lastSeenStructure[t1]
-@@ -1488,7 +1590,13 @@ _llint_op_ret_object_or_this:
- checkSwitchToJITForEpilogue()
- loadisFromInstruction(1, t2)
- loadConstantOrVariable(t2, t0)
-+if SOLARIS_AMD64
-+ bqaeq t0, solarisAMD64StackBottom, .opRetObjectOrThisSolarisAMD64StackPointer
-+end
- btqnz t0, tagMask, .opRetObjectOrThisNotObject
-+if SOLARIS_AMD64
-+.opRetObjectOrThisSolarisAMD64StackPointer:
-+end
- loadp JSCell::m_structure[t0], t2
- bbb Structure::m_typeInfo + TypeInfo::m_type[t2], ObjectType, .opRetObjectOrThisNotObject
- doReturn()
-@@ -1504,7 +1612,13 @@ _llint_op_to_primitive:
+ loadpFromInstruction((CallOpCodeSize - 2), t1)
+ loadi JSCell::m_structureID[t0], t3
+ storei t3, ArrayProfile::m_lastSeenStructureID[t1]
+@@ -1798,7 +1891,13 @@ _llint_op_to_primitive:
loadisFromInstruction(2, t2)
loadisFromInstruction(1, t3)
loadConstantOrVariable(t2, t0)
@@ -465,14 +404,14 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
+if SOLARIS_AMD64
+.opToPrimitiveSolarisAMD64StackPointer:
+end
- loadp JSCell::m_structure[t0], t2
- bbneq Structure::m_typeInfo + TypeInfo::m_type[t2], StringType, .opToPrimitiveSlowCase
+ bbaeq JSCell::m_type[t0], ObjectType, .opToPrimitiveSlowCase
.opToPrimitiveIsImm:
+ storeq t0, [cfr, t3, 8]
Index: qt5webkit/Source/JavaScriptCore/llint/LLIntOfflineAsmConfig.h
===================================================================
--- qt5webkit.orig/Source/JavaScriptCore/llint/LLIntOfflineAsmConfig.h
+++ qt5webkit/Source/JavaScriptCore/llint/LLIntOfflineAsmConfig.h
-@@ -104,6 +104,12 @@
+@@ -143,6 +143,12 @@
#define OFFLINE_ASM_JSVALUE64 0
#endif
@@ -485,3 +424,17 @@ Index: qt5webkit/Source/JavaScriptCore/llint/LLIntOfflineAsmConfig.h
#if !ASSERT_DISABLED
#define OFFLINE_ASM_ASSERT_ENABLED 1
#else
+Index: qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
+===================================================================
+--- qt5webkit.orig/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
++++ qt5webkit/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
+@@ -191,6 +191,9 @@ if JSVALUE64
+ const ValueTrue = TagBitTypeOther | TagBitBool | 1
+ const ValueUndefined = TagBitTypeOther | TagBitUndefined
+ const ValueNull = TagBitTypeOther
++if SOLARIS_AMD64
++ const solarisAMD64StackBottom = 0xFFFF800000000000
++end
+ const TagTypeNumber = 0xffff000000000000
+ const TagMask = TagTypeNumber | TagBitTypeOther
+ else
diff --git a/debian/patches/dyson-use-system-malloc.patch b/debian/patches/dyson-use-system-malloc.patch
index 7d85c5a..d5208da 100644
--- a/debian/patches/dyson-use-system-malloc.patch
+++ b/debian/patches/dyson-use-system-malloc.patch
@@ -3,12 +3,12 @@ Index: qt5webkit/Source/WTF/wtf/Platform.h
===================================================================
--- qt5webkit.orig/Source/WTF/wtf/Platform.h
+++ qt5webkit/Source/WTF/wtf/Platform.h
-@@ -721,7 +721,7 @@
- #if PLATFORM(QT)
- /* We must not customize the global operator new and delete for the Qt port. */
- #define ENABLE_GLOBAL_FASTMALLOC_NEW 0
--#if !OS(UNIX)
-+#if !OS(UNIX) || OS(SOLARIS)
+@@ -691,7 +691,7 @@
+ /* Include feature macros */
+ #include <wtf/FeatureDefines.h>
+
+-#if OS(WINDOWS) && !PLATFORM(QT)
++#if (OS(WINDOWS) && !PLATFORM(QT)) || OS(SOLARIS)
#define USE_SYSTEM_MALLOC 1
#endif
- #endif
+
diff --git a/debian/patches/dyson-yield.patch b/debian/patches/dyson-yield.patch
deleted file mode 100644
index ad7d80f..0000000
--- a/debian/patches/dyson-yield.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Description: Fixed conflict with yield() from unistd.h
-Index: qt5webkit/Source/WTF/wtf/Threading.h
-===================================================================
---- qt5webkit.orig/Source/WTF/wtf/Threading.h 2014-02-02 00:37:42.000000000 +0400
-+++ qt5webkit/Source/WTF/wtf/Threading.h 2014-04-28 13:36:40.701768654 +0400
-@@ -112,6 +112,5 @@
- using WTF::currentThread;
- using WTF::detachThread;
- using WTF::waitForThreadCompletion;
--using WTF::yield;
-
- #endif // Threading_h
-Index: qt5webkit/Source/WebCore/platform/sql/SQLiteDatabase.cpp
-===================================================================
---- qt5webkit.orig/Source/WebCore/platform/sql/SQLiteDatabase.cpp 2014-02-02 00:37:47.000000000 +0400
-+++ qt5webkit/Source/WebCore/platform/sql/SQLiteDatabase.cpp 2014-04-28 13:37:09.063961263 +0400
-@@ -127,7 +127,7 @@
- if (!m_db)
- return;
- sqlite3_interrupt(m_db);
-- yield();
-+ WTF::yield();
- }
-
- m_lockingMutex.unlock();
diff --git a/debian/patches/series b/debian/patches/series
index 13e6f0c..5e1189d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -5,8 +5,5 @@ fix_copyChars_segfault.diff
fix_selectedHtml_segfault.diff
fix_ftbfs_x32.diff
path_max.diff
-dyson-MathExtras.patch
-dyson-yield.patch
-dyson-MachineStackMarker-stackPointer.patch
dyson-solaris-amd64-memory-layout.patch
dyson-use-system-malloc.patch