1. 04 Mar, 2019 1 commit
  2. 13 Apr, 2015 1 commit
    • vegorov's avatar
      Treat HArgumentsObject as a safe use during Uint32 analysis phase. · 021f7381
      vegorov authored
      Deoptimization infrastructure already handles it correctly.
      
      This change fixes repetitive deoptimizations in the code like this:
      
          var u32 = new Uint32Array(1);
          u32[0] = -1;
      
          function tr(x) { return x|0; }
          function ld() { return tr(u32[0]); }
      
          while (true) ld();
      
      Currently inlined tr will contain HArgumentsObject that is considered uint32-unsafe use and prevents u32[0] from becoming uint32 load - instead a speculative int32 load is generated which just deopts.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1077113002
      
      Cr-Commit-Position: refs/heads/master@{#27781}
      021f7381
  3. 23 Aug, 2012 1 commit
  4. 22 Aug, 2012 1 commit
    • vegorov@chromium.org's avatar
      Allow uint32 value on optimized frames if they are consumed by safe operations. · f476d4d4
      vegorov@chromium.org authored
      Safe operations are those that either do not observe unsignedness or have special support for uint32 values:
      
      - all binary bitwise operations: they perform ToInt32 on inputs;
      - >> and << shifts: they perform ToInt32 on left hand side and ToUint32 on right hand side;
      - >>> shift: it performs ToUint32 on both inputs;
      - stores to integer external arrays (not pixel, float or double ones): these stores are "bitwise";
      - HChange: special support added for conversions of uint32 values to double and tagged values;
      - HSimulate: special support added for deoptimization with uint32 values in registers and stack slots;
      - HPhi: phis that have only safe uses and only uint32 operands are uint32 themselves.
      
      BUG=v8:2097
      TEST=test/mjsunit/compiler/uint32.js
      
      Review URL: https://chromiumcodereview.appspot.com/10778029
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      f476d4d4