• kmillikin@chromium.org's avatar
    Fix issue 977, occasional failure of the DeltaBlue benchmark. · 4a6ef3ee
    kmillikin@chromium.org authored
    Before, when we deoptimized after a branch we jumped to before the branch
    was taken in the unoptimized code with a token value that indicated when
    edge to take.  There was a lot of machinery to track this value through the
    short-circuit logical operations and logical negation, and to handle it
    properly at inline function return sites.  There was also machinery to
    prevent incorrectly seeing this environment with the extra value never
    actually materialized in the unoptimized code.
    
    Instead, now we deoptimize directly to one of the targets of the branch.
    Much but not yet all of the extra machinery has been removed or simplified.
    The cost is that branching control structures (the looping statements, if
    statements, conditional expressions, and the short-circuit binary logical
    operations) need extra AST IDs to identify the branch targets.
    
    Review URL: http://codereview.chromium.org/5908001
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6049 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    4a6ef3ee
hydrogen.cc 184 KB