Reviewers: ,
Message:
Toon, Andreas, please take a look.
Description:
Prototype implementation of GET_OWN_PROPERTY intrinsic.
This is an exploration of changes necessary to support optimizable
GET_OWN_PROPERTY intrinsic.
The overview:
1. Parser expands %GET_OWN_PROPERTY(o, p) into Property AST node with a
special
'own' mark
2. LoadIC and KeyedLoadIC acquire an extra IC state, PropertyLookupMode
3. Quite non-trivial amount of plumbing ensues but eventually LoadIC_Miss
does
the right lookup
4. A lot of checks here and there to avoid normal/own property lookup
interference.
Only ia32 of course. No turbo-fan support (but crankshaft works!)
All tests pass, but of course this needs more testing.
Overall the whole thing looks intrusive and frankly feels like a bug farm :)
However the ability to have optimizable access to private state on objects
sounds like a good thing to have.
Ideas for simplification are welcome of course.
Let me know what you think.
P.S. At least the part of the patch that changes Strings to Names is useful
in
its own right - I'll prep a separate patch with just those changes
Please review this at https://codereview.chromium.org/458813002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+437, -105 lines):
M src/accessors.h
M src/accessors.cc
M src/ast.h
M src/builtins.h
M src/builtins.cc
M src/code-stubs.h
M src/code-stubs.cc
M src/compiler/js-generic-lowering.cc
M src/full-codegen.h
M src/full-codegen.cc
M src/hydrogen.cc
M src/hydrogen-instructions.h
M src/ia32/full-codegen-ia32.cc
M src/ia32/ic-ia32.cc
M src/ia32/lithium-codegen-ia32.cc
M src/ia32/lithium-ia32.h
M src/ic.h
M src/ic.cc
M src/parser.cc
M src/runtime.h
M src/runtime.cc
M src/stub-cache.h
M src/stub-cache.cc
A test/mjsunit/getownprivateproperty.js
--
--
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.