Hi Sven,

>  * Finding the places where blocking is necessary is tricky, can we perhaps
> find a mechanical way to detect these?

We considered the following options but would like some feedback
before we go further:

1 ) Emit literal pools more frequently, this is what we did but it
completely overlooks code sequences where there is no literal pool
waiting to be emitted.
2 ) Make the assembler emit a nop between every instruction when there
is no constant pool block. That should catch most mistakes as any
offset computation which is not protected will be wrong but it may get
tricky to pinpoint the exact place where things went wrong.
3 ) a variant of 2 ) where two instructions are inserted between every
instructions: b 2 instructions ahead; brkpt (or swi). This would in
some cases caught the error sooner in the execution stream, but is it
worth the effort?
4 ) a variant of 2 ) where the nop inserted between instruction is
only used for this purpose, then the simulator is updated to check the
instruction executed before the nop was the one above (we should never
jump straight to these nops). This obviously only work in the
simulator.

Then we would need to decide if this is enabled by default for debug
or if this is activated by a flag.

What do you think?

Regards,
Rodolph.

-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to