Re: Understanding SNAP

  • From: Gerhard Fuernkranz <nospam456@xxxxxx>
  • To: luajit@xxxxxxxxxxxxx
  • Date: Thu, 5 Oct 2017 01:01:06 +0200

Am 04.10.2017 um 03:08 schrieb Luke Gorrie:

More broadly: How come side trace code does not take the parent IR code prefix 
into account during code generation? My understanding is that the side trace 
only uses the parent trace to create a special SNAP#0 that scavengers required 
local variables from the parent. This seems to be discarding a bunch of 
information from the parent trace e.g. existing register/stack assignments, 
guards that have already been checked, computations that could feed CSE/DCE 
optimizations, etc.

Seems that the SSA value numbers are local to each trace, and not globally 
spanning related traces. I'm wondering: Is the SSA IR actually retained after 
generating the machine code for a trace, or discarded? (If the parent's IR were 
already discarded then I guess that parent/child-spanning SSA-based 
optimizations can hardly be done.)

Regards,
Gerhard


Other related posts: