1. 19 Oct, 2015 2 commits
    • jarin's avatar
      [turbofan] Introduce lazy bailout, masked as a call. · f9a9c6be
      jarin authored
      This introduces an explicit lazy bailout. It is wrapped in the call
      node, mostly because the lazy deoptimization processing is married
      to the call processing in the instruction selector and the code generator.
      
      It is still a terrible hack.
      
      R=bmeurer@chromium.org,mstarzinger@chromium.org
      BUG=chromium:543994,v8:4195
      LOG=n
      
      Review URL: https://codereview.chromium.org/1412443003
      
      Cr-Commit-Position: refs/heads/master@{#31353}
      f9a9c6be
    • bmeurer's avatar
      [turbofan] Initial support for monomorphic/polymorphic property loads. · e1088b27
      bmeurer authored
      Native context specialization now lowers monomorphic and
      polymorphic accesses to data and constant data properties on
      object and/or prototype chain. We don't deal with accessors
      yet, and we also completely ignore proxies (which is compatible
      with what Crankshaft does).
      
      The code is more or less the straightforward implementation. We
      will need to refactor that and extract common patterns once the
      remaining bits for full load/store support is in.
      
      CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_nosnap_rel
      R=jarin@chromium.org
      BUG=v8:4470
      LOG=n
      
      Committed: https://crrev.com/3a0bf860b7177f7abef01ff308a53603389d958e
      Cr-Commit-Position: refs/heads/master@{#31340}
      
      Review URL: https://codereview.chromium.org/1396333010
      
      Cr-Commit-Position: refs/heads/master@{#31352}
      e1088b27
  2. 18 Oct, 2015 4 commits
  3. 17 Oct, 2015 1 commit
    • jarin's avatar
      [turbofan] Redundant branch elimination. · 106aecf2
      jarin authored
      Removes a branch that checks for a condition that has been checked on dominators of the branch.
      
      This introduces a new reducer that propagates the list of checked conditions (and their boolean values) through the control flow graph. If it encounters a branch checking a condition with a known value, the branch is eliminated.
      
      The analysis relies on loops being reducible: if a condition has been checked on all paths to loop entry, then it is checked in the loop (regardless what of the conditions checked inside the loop).
      
      The implementation is fairly naive and could be improved:
      
      - all the operation on the condition lists could be made allocation-free when revisited.
      
      - we could try to use a map structure rather than a linked list (to make
      lookups faster).
      
      - the merging of control flow could be changed to take into account
        conditions from non-dominating paths (as long as all paths check
        the condition).
      
      Review URL: https://codereview.chromium.org/1376293005
      
      Cr-Commit-Position: refs/heads/master@{#31347}
      106aecf2
  4. 16 Oct, 2015 28 commits
  5. 15 Oct, 2015 5 commits