Details
-
Task
-
Resolution: Fixed
-
P1: Critical
-
6.4
-
c7722d4ed (dev), 73f1fa8a8 (6.5), b0907db9e (dev), 6979f718b (6.5)
Description
Idea: Values store only pointers to managed objects, which have 16byte alignment => we have 3 bits for tagging.
x: any value
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxx0
pointer (can be stored as-is)
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxx01
int62?, only support int32 initially by storing it in the first half
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxx011
double, probably has to be a pointer to a heap managed double.
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxx111
we can use all those values for various tags (undefined, empty, nan, +/-inf, Null, true, false). Exact scheme to be decided.
Attachments
Issue Links
- is required for
-
QTBUG-101928 Heap-box doubles in QML engine
-
- Closed
-
- resulted from
-
QTBUG-91150 Address Android's Top-byte Ignore feature
-
- Closed
-
For Gerrit Dashboard: QTBUG-101686 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
449841,18 | Change value encoding scheme to make space for larger pointers | dev | qt/qtdeclarative | Status: MERGED | +2 | 0 |
453651,2 | Change value encoding scheme to make space for larger pointers | 6.5 | qt/qtdeclarative | Status: MERGED | +2 | 0 |
453796,2 | V4: Do not shift heap pointer bits on arm64 Android | dev | qt/qtdeclarative | Status: MERGED | +2 | 0 |
454468,2 | V4: Do not shift heap pointer bits on arm64 Android | 6.5 | qt/qtdeclarative | Status: MERGED | +2 | 0 |