[+v8-dev] On Oct 20, 2014 11:45 PM, "Dmitry Lomov" <[email protected]> wrote:
> > On Oct 20, 2014 9:38 PM, "Erik Arvidsson" <[email protected]> wrote: > > > > > > > > On Sat, Oct 18, 2014 at 2:30 PM, Dmitry Lomov <[email protected]> > wrote: > >> > >> On Sat, Oct 18, 2014 at 7:56 PM, Erik Arvidsson <[email protected]> > wrote: > >>> > >>> I don't think an access check is needed. The function and prototype > are both new objects created by the class definition evaluation. > >> > >> I see, you are right. This code is scary though. I would like this > invariant (that the function and prototype are new, just created objects to > be very prominent in the code. > >> > >> Here is an idea: > >> - Split Runtime_Define class into Runtime_CreateClassPrototype and > Runtime_DefineClassConstructor. > >> - Pass class prototype into both Runtime_DefineConstructor and into > EmitClassDefineProperties (the latter will assume class prototype and > constructor are both on the stack. In fact, you probably do not need a > constructor there at all). > >> > >> WDYT? > > > > > > I've been trying to find a clean way to split "create class" into > "create constructor" and "create prototype" but they are highly > intertwined. > > > > If you look at the spec you can see how it computes protoParent and > constructorParent in parallel, including doing a Get(superclass, > "prototype"). These two needs to go hand in hand. > > > > If I split this I think I need at least 3 stages > > > > - Create prototype. Pass: extends value > > - Create constructor. Pass: extends value, name, prototype and > constructor > > - Define the rest of the methods. Pass: prototype and constructor > (constructor is need for statics) > > > > (and setup the toString data too) > > > > As I was trying to change the code to the above I am convinced that it > is a lot less clean than what I have at the moment. > > > > OK, makes sense. Sorry for a goose chase. > At least add a comment explaining why access check is not needed. > >> > >> > >>> On Oct 18, 2014 5:05 AM, <[email protected]> wrote: > >>>> > >>>> > >>>> > https://codereview.chromium.org/639123009/diff/1/src/ia32/full-codegen-ia32.cc > >>>> File src/ia32/full-codegen-ia32.cc (right): > >>>> > >>>> > https://codereview.chromium.org/639123009/diff/1/src/ia32/full-codegen-ia32.cc#newcode2446 > >>>> src/ia32/full-codegen-ia32.cc:2446: __ > >>>> CallRuntime(Runtime::kSetProperty, 4); > >>>> On 2014/10/18 08:30:33, Dmitry Lomov (chromium) wrote: > >>>>> > >>>>> You should use StoreIC here (see EmitKeyedPropertyAssignment for how > >>>> > >>>> it is done) > >>>> > >>>> s/Keyed/Named/ of course. > >>>> Maybe given how much runtime calling is going on here anyway, maybe > it's > >>>> not worth it yet to install ICs here > >>>> > >>>> https://codereview.chromium.org/639123009/ > >> > >> > > > > > > > > -- > > erik > > > > > -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
