Motivation: in 64-bit machines, we can store boxed uint32 values as a tagged pointer. In 32-bit machines, we need to allocated an object (like Haskell) to store the uint32 value. So, the generated bytecode is quite different in each platform. This change also allow us to simplify the IR. Example: we don't need the type `sizet` anymore. Impact: To be able to bootstrap in both platforms, we will have to store two versions of the generated code: 32 and 64 versions. In principle, we only need to store the 64-bit version, and use cross-compilation to build the 32-bit version. |
||
|---|---|---|
| .. | ||
| fail | ||
| run | ||
| trust0 | ||
| check.lean | ||
| check.lean.expected.out | ||
| extract.lean | ||
| extract.lean.expected.out | ||
| parser1.lean | ||
| parser1.lean.expected.out | ||
| readlinkf.sh | ||
| string_imp.lean | ||
| string_imp.lean.expected.out | ||
| string_imp2.lean | ||
| string_imp2.lean.expected.out | ||
| test.sh | ||
| test_all.sh | ||
| test_single.sh | ||
| test_single_pp.sh | ||