summaryrefslogtreecommitdiff
path: root/debian/patches/dyson-solaris-amd64-memory-layout.patch
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 /debian/patches/dyson-solaris-amd64-memory-layout.patch
parent9ccbb8b53bffc27420ad8b360c581668bb8837bd (diff)
downloadqt5webkit-46c093eaeae3365f46124655c19df0762eb80caf.tar.gz
Update Dyson patches (might not work yet)
Diffstat (limited to 'debian/patches/dyson-solaris-amd64-memory-layout.patch')
-rw-r--r--debian/patches/dyson-solaris-amd64-memory-layout.patch189
1 files changed, 71 insertions, 118 deletions
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