• kmillikin@chromium.org's avatar
    Add support for (some) assignment expressions to the CFG builder and · 9edc69c7
    kmillikin@chromium.org authored
    fast-mode compiler.
    
    1. We avoid generating a useless temporary for assignments with
    nontrivial right-hand sides.  Instead of translating id = expr into:
    
    ...
    tmp = <last expr instruction>
    id = tmp
    
    we generate directly
    
    ...
    id = <last expr instruction>
    
    by passing a data destination ('hint') down the AST.  The semantics is
    to use the destination as a result location if a temp is needed.  It
    may be ignored.  NULL indicates I don't care and you should generate a
    temp.
    
    2. We correctly handle assignments as subexpressions.  When building
    the CFG for an expression we accumulate the assigned variables and we
    emit a move to a fresh temporary if a value in a variable is in
    jeopardy of being overwritten.
    
    Review URL: http://codereview.chromium.org/165056
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2643 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    9edc69c7
cfg.cc 16.8 KB