Reviewers: Vyacheslav Egorov,
Message:
This a rather subtle change since it is not easy to verify that we don't
accidentally embed JSFunction into code. Right now we catch this cases only
debug-mode ASSERTs.
To convince myself that I found all places I manually renamed all
assember-ia32
functions (mov, cmp, push, Immediate) that take a Handle<Object> as
argument in
a separate workspace and checked all call sites that we never store a
new-space
JSFunction object without indirecting through a cell.
Ideally we could statically make sure that this can't happen, but for now I
don't see a nice way of enforcing this (without changing a lot of code), so
I
left this out of this change.
Description:
Allow new-space JSFunction objects as constant-function properties.
This change enables JSFunction objects in new-space to be constant-
function properties. This allows more direct-call or inlining opportunities.
We have to ensure that we never directly embed a new-space pointer into
code.
Please review this at http://codereview.chromium.org/8111006/
SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/
Affected files:
M src/arm/lithium-arm.h
M src/arm/lithium-codegen-arm.cc
M src/arm/macro-assembler-arm.h
M src/arm/macro-assembler-arm.cc
M src/arm/stub-cache-arm.cc
M src/ia32/assembler-ia32.h
M src/ia32/assembler-ia32.cc
M src/ia32/lithium-codegen-ia32.h
M src/ia32/lithium-codegen-ia32.cc
M src/ia32/macro-assembler-ia32.h
M src/ia32/macro-assembler-ia32.cc
M src/ia32/stub-cache-ia32.cc
M src/ic.cc
M src/objects-inl.h
M src/objects.h
M src/objects.cc
M src/stub-cache.h
M src/stub-cache.cc
M src/x64/lithium-codegen-x64.h
M src/x64/lithium-codegen-x64.cc
M src/x64/lithium-x64.h
M src/x64/macro-assembler-x64.h
M src/x64/macro-assembler-x64.cc
M src/x64/stub-cache-x64.cc
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev