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
