about summary refs log tree commit diff
path: root/src/libstd/sys/unix/stack_overflow.rs
diff options
context:
space:
mode:
authorKang Seonghoon <public+git@mearie.org>2015-03-03 00:34:50 +0900
committerKang Seonghoon <public+git@mearie.org>2015-03-03 11:55:37 +0900
commitfe73d382eeabaed0c37425388ab15ad690e5906f (patch)
tree132367064f05aaa3e312ae1b0824c48e58120bf2 /src/libstd/sys/unix/stack_overflow.rs
parent36a09a162dd04cf1ba092a837978cecea88bc529 (diff)
downloadrust-fe73d382eeabaed0c37425388ab15ad690e5906f.tar.gz
rust-fe73d382eeabaed0c37425388ab15ad690e5906f.zip
metadata: Compact integer encoding.
Previously every auto-serialized tags are strongly typed. However
this is not strictly required, and instead it can be exploited
to provide the optimal encoding for smaller integers. This commit
repurposes `EsI8`/`EsU8` through `EsI64`/`EsU64` tags to represent
*any* integers with given ranges: It is now possible to encode
`42u64` as two bytes `EsU8 0x2a`, for example.

There are some limitations:

* It does not apply to non-auto-serialized tags for obvious reasons.
  Fortunately, we have already eliminated the biggest source of
  such tag in favor of auto-serialized tags: `tag_table_id`.
* Bigger tags cannot be used to represent smaller types.
* Signed tags and unsigned tags do not mix.
Diffstat (limited to 'src/libstd/sys/unix/stack_overflow.rs')
0 files changed, 0 insertions, 0 deletions