[interp] Replace frame_objref with a volatile store to local. (#16790)
commit735b2cd20c51a926aae93f50903b4e022e851c58
authorJay Krell <jaykrell@microsoft.com>
Fri, 13 Sep 2019 02:39:02 +0000 (12 19:39 -0700)
committerLarry Ewing <lewing@microsoft.com>
Fri, 13 Sep 2019 02:39:02 +0000 (12 21:39 -0500)
tree7db184c22beac98658a9693cba500d8d7ab7b351
parentfe1994415582f552abb4d92cc2e48f1b2688d074
[interp] Replace frame_objref with a volatile store to local. (#16790)

* [interp] Replace frame_objref with volatile stores to non-volatile locals.
Non-volatiles subject to volatile read/write still get stack-packed.
Volatiles do not.

This will possibly conserve stack, unless MINT_NEWOBJ_FAST is critical path.
 It looks like it is -- enabling this for Linux/gcc/amd64 grows
  frame from 0x98 to 0xA8.

In either case, it is more efficient as the reads do not have to be volatile.
The value can be on the stack and in registers. The stack value will pin it.

* PR: Comments.

* PR: Rearrange comment for correctness, same length.
mono/mini/interp/interp-internals.h
mono/mini/interp/interp.c