Re: ARM: Add literal pool blocking to position critical code. (issue 10451037)

27 views
Skip to first unread message

m.m.ca...@googlemail.com

unread,
Jun 12, 2012, 9:06:20 AM6/12/12
to da...@chromium.org, v8-...@googlegroups.com
Ping. Anybody have time to look at this? It should bring stability
improvements.

Thanks.


http://codereview.chromium.org/10451037/

Daniel Clifford

unread,
Jun 12, 2012, 9:20:24 AM6/12/12
to m.m.ca...@googlemail.com, da...@chromium.org, v8-...@googlegroups.com
Hi Martyn,

Sorry, this one slipped through the cracks. I'll make sure it gets looked at.

Danno

da...@chromium.org

unread,
Jun 12, 2012, 9:29:46 AM6/12/12
to m.m.ca...@googlemail.com, sven...@chromium.org, v8-...@googlegroups.com
Sven, can you please take a look? Thanks, Danno

http://codereview.chromium.org/10451037/

sven...@chromium.org

unread,
Jun 12, 2012, 1:26:10 PM6/12/12
to m.m.ca...@googlemail.com, da...@chromium.org, v8-...@googlegroups.com
LGTM, I'll land this CL. 2 remarks:

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

* Our ToT is currently in a pitiful state, but it seems that this CL
doesn't
make it any worse. ;-)

http://codereview.chromium.org/10451037/

M Capewell

unread,
Jun 13, 2012, 5:45:10 AM6/13/12
to v8-dev
On Jun 12, 6:26 pm, svenpa...@chromium.org wrote:
> LGTM, I'll land this CL. 2 remarks:
>
>    * Finding the places where blocking is necessary is tricky, can we perhaps
> find a mechanical way to detect these?

Agreed, they are difficult to find. The method we're using is a hack
that generates literal pools very frequently, then we debug each
failure in the test suite. I guess when we clear these failures, we
should add this high-frequency literal pool hack as a shell feature,
to prevent regressions.

Rodolph Perfetta

unread,
Jun 13, 2012, 9:31:22 AM6/13/12
to v8-...@googlegroups.com
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.
Reply all
Reply to author
Forward
0 new messages