I looked into option (2) for a few hours, so probably less than Jan
probably did. Something I noticed is that keeping the fork up to date would
probably be very painful. They implement some objects based on their
different class based JS object mechanism. They have a Handle<> that
behaves differently. Overall I find their code fits much less into ours
compared to yarr/jsc.The work for porting v8 might actually not be much
less compared to implemented something very similar to how they do it.


On Thu, Jan 2, 2014 at 4:01 PM, Andreas Gal <[email protected]> wrote:

>
> I am not confident that regexp performance is enough of a key investment
> area for us to justify (3). (2) sounds like a viable option to me, though
> we will have to investigate the platform bindings as you said. I remember
> Lars bragging that their regexp engine compiles are possible cases of
> regexps, so at least this will be the last time we have to do this. Plus,
> we will automatically always be performance competitive with Chrome. Thats
> an important strategic approach here.
>
> Thanks,
>
> Andreas
>
> On Jan 2, 2014, at 6:46 AM, Jan de Mooij <[email protected]> wrote:
>
> > Back in 2010, we imported the YARR regular expression engine from JSC
> [0].
> > It has served us well over the years, but with all the optimizations to
> the
> > rest of the engine, regular expression performance is becoming a
> bottleneck
> > again. When YARR is able to JIT a regular expression, performance is
> mostly
> > on par with V8. However, when we can't compile a regexp, we're stuck in
> the
> > interpreter and become very slow.
> >
> > Unfortunately, YARR is unable to JIT some regular expressions used in
> > popular JS libraries like jQuery [1]. The main problem is that YARR can't
> > compile regexps with nested parenthesized groups. As I understand it,
> this
> > is a pretty fundamental issue that requires a major refactoring. The
> > upstream WebKit bug has had no activity for over 3 years [2].
> >
> > There's also a problem with "quantity 1 subpatterns that are copies" that
> > affects a Peacekeeper email validation regular expression [3] and is the
> > only reason for us being slower than Chrome on the Peacekeeper
> > stringValidateForm test [4].
> >
> > To address these issues, we have the following options:
> > (1) Fix YARR ourselves, either upstream or locally.
> > (2) Switch from YARR to V8's irregexp engine.
> > (3) Write something ourselves, probably based on V8's irregexp.
> >
> > (1) will be hard; I don't think we have somebody familiar enough with
> YARR
> > to do a refactoring of this size. It could be an option though.
> >
> > For (2), we'd have to write a layer mapping V8's macro assembler calls to
> > our own macro assembler. Unfortunately, unlike SM and JSC, V8 has more
> > platform-specific code and we'd have to do this work for different
> > platforms. I'm not sure what other dependencies there are on other parts
> of
> > the V8 engine.
> >
> > Personally, I like (3): it's not a small task, but it'd finally give us a
> > regexp engine that integrates well with the rest of the engine. This also
> > means we can dump JSC's macro-assembler (JM used it as well, but is also
> > gone) and use the one we wrote for the baseline/Ion JITs. It'd also
> > integrate much better than Yarr in terms of code style and data
> structures.
> > If we base it on irregexp, we should be able to avoid most pitfalls or
> > design problems.
> >
> > What do people think?
> >
> > Jan
> >
> > [0] https://bugzilla.mozilla.org/show_bug.cgi?id=564953
> > [1] https://bugzilla.mozilla.org/show_bug.cgi?id=929507
> > [2] https://bugs.webkit.org/show_bug.cgi?id=42264
> > [3] https://bugs.webkit.org/show_bug.cgi?id=122891
> > [4] https://bugzilla.mozilla.org/show_bug.cgi?id=692009
> > _______________________________________________
> > dev-tech-js-engine-internals mailing list
> > [email protected]
> > https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals
>
> _______________________________________________
> dev-tech-js-engine-internals mailing list
> [email protected]
> https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals
>
_______________________________________________
dev-tech-js-engine-internals mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to