6c463b7562
Previously ReturnPointer was just the first slot in the locals array, which had type `Vec<Pointer>`. But after my recent refactoring, locals is `Vec<Value>` and it became increasingly hacky to pull a pointer out of the first slot to be the value. Besides, that hack wouldn't allow ReturnPointer to ever be an `Lvalue::Local`, referring directly to a local on a higher stack frame. Now ReturnPointer has no presence in the locals array, instead being upgraded to its own field on `Frame`. This introduces a couple of new hacks, detailed by some of my FIXME comments, so that I could get the tests passing again and commit. More commits coming soon should clean up these hacks without much trouble, and overall I feel that the code is converging on a cleaner, more efficient design. |
||
---|---|---|
.. | ||
alignment.rs | ||
assume.rs | ||
cast_fn_ptr_unsafe2.rs | ||
cast_fn_ptr_unsafe.rs | ||
cast_fn_ptr.rs | ||
dangling_pointer_deref.rs | ||
deref_fn_ptr.rs | ||
env_args.rs | ||
execute_memory.rs | ||
invalid_bool.rs | ||
invalid_enum_discriminant.rs | ||
match_char.rs | ||
null_pointer_deref.rs | ||
oom2.rs | ||
oom.rs | ||
out_of_bounds_read2.rs | ||
out_of_bounds_read.rs | ||
overwriting_part_of_relocation_makes_the_rest_undefined.rs | ||
pointers_to_different_allocations_are_unorderable.rs | ||
rc.rs | ||
send-is-not-static-par-for.rs | ||
stack_limit.rs | ||
static_memory_modification2.rs | ||
static_memory_modification3.rs | ||
static_memory_modification.rs | ||
timeout.rs | ||
undefined_byte_read.rs | ||
unimplemented.rs | ||
wild_pointer_deref.rs | ||
zst.rs |