On 2012/06/13 09:11:29, Yang wrote:
On 2012/05/28 19:13:08, Yang wrote:
> On 2012/05/28 16:24:00, m.m.capewell wrote:
> > Description from the patch:
> > The emission of constant pool depends on the size of the code generated
and
> > the number of RelocInfo recorded.
> > The Debug mechanism needs to map code offsets between two versions of a
> > function, compiled with and without debugger support (see for example
> > Debug::PrepareForBreakPoints()).
> > Compiling functions with debugger support generates additional code
> > (Debug::GenerateSlot()). This may affect the emission of the constant
> > pools and cause the version of the code with debugger support to have
> > constant pools generated in different places.
> > Recording the position and size of emitted constant pools allows to
> > correctly compute the offset mappings between the different versions of a
> > function in all situations.
>
> I'll take a look as soon as I'm back from vacation (Monday in a! week).

Sorry that it took this long.

Putting ifdefs in all places seems rather ugly to me, and not really
consistent
too (e.g. IsConstPool is not ifdef'ed). We also try to keep platform-dependent
code to a minimum. Also, it probably safer not to make the assumption that
constant pools are limited to ARM.

It seems that the constant pool handling is not part of any performance
critical
code, and having code to handle constant pools even on Intel platforms does no
harm (e.g. the second block in debug.cc's
RedirectActivationsToRecompiledCodeOnThread would work on ia32 and x64 as
well,
even though there is no need to check for constant pools). I think it's better (for code health and readability) to simply include constant pool related code
on all platforms, and only take advantage of that infrastructure on ARM.

Drive-by comment: It would be nice to have a regression test for this bug. We now actually have indirect coverage via mjsunit/debug-liveedit-breakpoints, but that's just by accident. So it might be good to have a targeted regression test
for just this bug. BTW, I opened an issue to track this.

http://code.google.com/p/v8/issues/detail?id=2179

https://chromiumcodereview.appspot.com/10449047/

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

Reply via email to