On 2014/03/13 11:57:07, danno-g wrote:
Sorry, I meant:

Callee-saved tagged registers are also not feasible at all, since generally
the caller can never know if they need to save a register as just bits or
interpret it as an object pointer, i.e. the caller always need to assume that
tagged registers get clobbered and has to save them before making calls.

Worse, if we have a call chain A -> B -> C with A having callee-saved registers,
it may be the case that those values are either stored in B or C's frame (or
worse, in some C function's frame somewhere in the middle whose layout we don't know). If we were to deoptimize B or C we have to handle any registers they have saved on behalf of their caller (i.e. A). I think this is a major complication
that is likely to have many special cases and produce a steady stream of
hard-to-find bugs.

In general, the strategy to deal with chokepoints like this is to inline the
fast path, which avoids spilling all the registers, and have a deferred path
that only saves the registers in the caller in the slow case.

https://codereview.chromium.org/194793002/

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to