• svenpanne@chromium.org's avatar
    Use type info for the ToBoolean translation in crankshaft. · e48ec1c4
    svenpanne@chromium.org authored
    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.
    Review URL: http://codereview.chromium.org/7461107
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8758 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    e48ec1c4
lithium-codegen-ia32.cc 147 KB