Some idea:
BUILD_JSVAL(JSValueTag tag, uint64_t payload)
{
jsval_layout l;
+#if SOLARIS_STACK_LAYOUT
+ payload &= JSVAL_PAYLOAD_MASK;
+#endif
l.asBits = (((uint64_t)(uint32_t)tag) << JSVAL_TAG_SHIFT) |
payload;
return l;
}
@@ -645,7 +656,14 @@
static inline JSString *
JSVAL_TO_STRING_IMPL(jsval_layout l)
{
+#if SOLARIS_STACK_LAYOUT
+ uint64_t ptrBits = l.asBits & JSVAL_PAYLOAD_MASK;
+ if (ptrBits)
+ ptrBits |= JSVAL_TAG_MASK;
+ return (JSString *)ptrBits;
+#else
return (JSString *)(l.asBits & JSVAL_PAYLOAD_MASK);
+#endif
}
_______________________________________________
dev-tech-js-engine-internals mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals