1. 13 Jul, 2015 1 commit
  2. 10 Jul, 2015 2 commits
  3. 06 Jul, 2015 3 commits
    • bmeurer's avatar
      [turbofan] Reland "Add new JSFrameSpecialization reducer." and "Perform OSR... · ef661b08
      bmeurer authored
      [turbofan] Reland "Add new JSFrameSpecialization reducer." and "Perform OSR deconstruction early and remove type propagation.".
      
      We have to reland these two commits at once, because the first breaks
      some asm.js benchmarks without the second. The change was reverted
      because of bogus checks in the verifier, which will not work in the
      presence of OSR (and where hidden because of the type back propagation
      hack in OSR so far). Original messages are below:
      
      [turbofan] Add new JSFrameSpecialization reducer.
      
      The JSFrameSpecialization specializes an OSR graph to the current
      unoptimized frame on which we will perform the on-stack replacement.
      This is used for asm.js functions, where we cannot reuse the OSR
      code object anyway because of context specialization, and so we could as
      well specialize to the max instead.
      
      It works by replacing all OsrValues in the graph with their values
      in the JavaScriptFrame.
      
      The idea is that using this trick we get better performance without
      doing the unsound backpropagation of types to OsrValues later. This
      is the first step towards fixing OSR for TurboFan.
      
      [turbofan] Perform OSR deconstruction early and remove type propagation.
      
      This way we don't have to deal with dead pre-OSR code in the graph
      and risk optimizing the wrong code, especially we don't make
      optimistic assumptions in the dead code that leaks into the OSR code
      (i.e. deopt guards are in dead code, but the types propagate to OSR
      code via the OsrValue type back propagation).
      
      BUG=v8:4273
      LOG=n
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1226673005
      
      Cr-Commit-Position: refs/heads/master@{#29486}
      ef661b08
    • machenbach's avatar
      Revert "[turbofan] Add new JSFrameSpecialization reducer." · 9e71cdba
      machenbach authored
      Also revert "[turbofan] Perform OSR deconstruction early and remove type propagation."
      
      This reverts commit b0a852e8.
      
      This reverts commit cdbb6c48.
      
      NOTRY=true
      NOTREECHECKS=true
      BUG=v8:4273
      LOG=n
      TBR=bmeurer@chromium.org
      
      Review URL: https://codereview.chromium.org/1225743002
      
      Cr-Commit-Position: refs/heads/master@{#29480}
      9e71cdba
    • bmeurer's avatar
      [turbofan] Add new JSFrameSpecialization reducer. · b0a852e8
      bmeurer authored
      The JSFrameSpecialization specializes an OSR graph to the current
      unoptimized frame on which we will perform the on-stack replacement.
      This is used for asm.js functions, where we cannot reuse the OSR code
      object anyway because of context specialization, and so we could as well
      specialize to the max instead.
      
      It works by replacing all OsrValues in the graph with their values in
      the JavaScriptFrame.
      
      The idea is that using this trick we get better performance without
      doing the unsound backpropagation of types to OsrValues later. This is
      the first step towards fixing OSR for TurboFan.
      
      R=jarin@chromium.org
      BUG=v8:4273
      LOG=n
      
      Review URL: https://codereview.chromium.org/1225683004
      
      Cr-Commit-Position: refs/heads/master@{#29476}
      b0a852e8
  4. 30 Jun, 2015 1 commit
  5. 29 Jun, 2015 1 commit
    • arv's avatar
      [es6] Make new.target work in functions · 7a63bf77
      arv authored
      This makes new.target work in [[Call]] and [[Construct]] of ordinary
      functions.
      
      We achieve this by introducing a new construct stub for functions that
      uses the new.target variable. The construct stub pushes the original
      constructor just above the receiver in the construct frame.
      
      BUG=v8:3887
      LOG=N
      R=adamk@chromium.org, dslomov@chromium.org
      
      Review URL: https://codereview.chromium.org/1203813002
      
      Cr-Commit-Position: refs/heads/master@{#29358}
      7a63bf77
  6. 26 Jun, 2015 3 commits
  7. 25 Jun, 2015 6 commits
  8. 24 Jun, 2015 1 commit
    • danno's avatar
      Use big-boy Types to annotate interface descriptor parameters · c019d7f4
      danno authored
      - Thread Type::FunctionType through stubs and the TF pipeline.
      - Augment Typer to decorate parameter nodes with types from
        a Type::FunctionType associated with interface descriptors.
      - Factor interface descriptors into platform-specific and
        platform-independent components so that all descriptors share
        a common Type::FunctionType for all platforms.
      
      Review URL: https://codereview.chromium.org/1197703002
      
      Cr-Commit-Position: refs/heads/master@{#29248}
      c019d7f4
  9. 23 Jun, 2015 1 commit
  10. 22 Jun, 2015 2 commits
    • yangguo's avatar
      Do not look for existing shared function info when compiling a new script. · 7c43967b
      yangguo authored
      LOG=N
      BUG=chromium:502908
      
      Review URL: https://codereview.chromium.org/1196223002
      
      Cr-Commit-Position: refs/heads/master@{#29179}
      7c43967b
    • mstarzinger's avatar
      Fix terrible interaction with code flushing. · 816abc5e
      mstarzinger authored
      This fixes a terrible interaction of code flushing and the clearing of
      optimized code maps hanging off a SharedFunctionInfo. The following is
      what happened:
      1) Incremental marking cleared map in SharedFunctionInfo s, however it
         was not enqueued as a flushing candidate because one JSFunction f1
         still had optimized code.
      2) Deoptimization of f1 made s eligible for code flushing.
      3) Optimization of f2 added new entry to optimized code map of s.
      4) The JSFunction f2 became unreachable and hence is never marked.
      5) Incremental marking now visits f1, finds it eligible for flushing,
         also s is eligible for flushing, both are enqueued.
      6) Marking finishes, code flusher clears f1 and s, but the optimized
         code map of s still contains an entry.
      7) Boom!
      
      R=ulan@chromium.org,hpayer@chromium.org
      TEST=mjsunit/es6/generators-iteration
      BUG=v8:3803
      LOG=N
      
      Review URL: https://codereview.chromium.org/1197713004
      
      Cr-Commit-Position: refs/heads/master@{#29177}
      816abc5e
  11. 19 Jun, 2015 2 commits
  12. 11 Jun, 2015 2 commits
  13. 01 Jun, 2015 1 commit
  14. 21 May, 2015 2 commits
  15. 20 May, 2015 2 commits
  16. 19 May, 2015 3 commits
  17. 18 May, 2015 3 commits
  18. 13 May, 2015 1 commit
  19. 11 May, 2015 2 commits
  20. 08 May, 2015 1 commit
    • mvstanton's avatar
      TurboFan: commit dependencies only on update of the opt. code list. · f9c46ed1
      mvstanton authored
      TurboFan compilation was committing dependencies long before the
      optimized function made it's way into the optimized code list for
      the native context. The problem is that once the code pointer is out
      there in dependency arrays, it is eligible for deopt. But the deopt
      logic needs the code to be in the optimized code list to fully do it's
      job.
      
      BUG=
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1136693003
      
      Cr-Commit-Position: refs/heads/master@{#28312}
      f9c46ed1