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

Reply via email to