1. 16 Feb, 2018 18 commits
  2. 15 Feb, 2018 21 commits
  3. 14 Feb, 2018 1 commit
    • Georg Neis's avatar
      [ic] EmitElementStore: don't miss when hitting new space limit. · af677f29
      Georg Neis authored
      CSA::EmitElementStore used to bail out (IC miss) via
      CSA::CheckForCapacityGrow when the capacity hits the new space
      limit, causing the store IC to go megamorphic in my example (see
      referenced bug). With this CL, we do what TF'ed code does already:
      call into Runtime::kGrowArrayElements (in this situation), thus
      staying monomorphic.
      
      Here's a contrived test case:
      
      ////////////////////////
      let x = [];
      
      function bar() {
        for (let i = 0; i < 50000; ++i) x[i] = i;
      }
      
      function foo() {
        for (let i = x.length; i < 100e6; ++i) x[i] = i;
      }
      
      bar();
      foo();
      ////////////////////////
      
      This took about 4s on my machine, now it takes 3s.
      
      Bug: v8:7447
      Change-Id: I7f268fc55835f363d250613ce0357444a663051c
      Reviewed-on: https://chromium-review.googlesource.com/918723
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51297}
      af677f29