Reviewers: danno, fschneider,
Description:
Use type info for the ToBoolean translation in crankshaft.
To do this, the Branch instruction needs to carry around a temporary
register,
but only when the crankshafted code will make a map access. When the
crankshafted code sees an object of a type it hasn't encountered before, it
will
always trigger a deopt. Another option in theses cases would be calling a
ToBooleanStub which can handle all types, but then one has to be careful to
*not* trigger a GC (which is currently a bit tricky to achieve).
Const-corrected ToBoolean::Types. Moved the NeedsMap logic into
ToBoolean::Types
itself, where it belongs.
This patch improves a lot of benchmarks, crypto-orig even by 16.7%, but
slows
down others. The slowdown has to be investigated, but I'd like to get this
patch
out first to fix the flakiness problems we currently have due to the
previous
crankshafted ToBoolean.
Please review this at http://codereview.chromium.org/7461107/
SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/
Affected files:
M src/code-stubs.h
M src/code-stubs.cc
M src/ia32/code-stubs-ia32.cc
M src/ia32/lithium-codegen-ia32.cc
M src/ia32/lithium-ia32.h
M src/ia32/lithium-ia32.cc
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev