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

Reply via email to