On a right track, shaping nicely.
https://codereview.chromium.org/639123009/diff/1/src/full-codegen.cc
File src/full-codegen.cc (right):
https://codereview.chromium.org/639123009/diff/1/src/full-codegen.cc#newcode1571
src/full-codegen.cc:1571: EmitClassDefineProperties(lit);
nit: keep plugging context here - this is a result of ClassLiteral
evluation, not of emitting class properties. The contract should be that
EmitClassDefineProperties has a class in result_register()
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#newcode2424
src/ia32/full-codegen-ia32.cc:2424: __ mov(scratch, FieldOperand(eax,
JSFunction::kPrototypeOrInitialMapOffset));
Loading prototype is an operation that requires access check :(
So you need to call GetPrototype here, just like for super(...) call.
I guess extract that into a separate EmitGetPrototype.
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);
You should use StoreIC here (see EmitKeyedPropertyAssignment for how it
is done)
https://codereview.chromium.org/639123009/
--
--
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.