1. 19 Feb, 2016 2 commits
  2. 02 Feb, 2016 2 commits
    • bmeurer's avatar
      [turbofan] Introduce proper ObjectIsReceiver operator. · 6b2001b6
      bmeurer authored
      Avoid the hacking in JSIntrinsicLowering and provide a proper simplified
      operator ObjectIsReceiver instead that is used to implement %_IsJSReceiver
      which is used by our JavaScript builtins and the JSInliner.
      
      R=jarin@chromium.org
      BUG=v8:4544
      LOG=n
      
      Review URL: https://codereview.chromium.org/1657863004
      
      Cr-Commit-Position: refs/heads/master@{#33675}
      6b2001b6
    • jarin's avatar
      Remove the template magic from types.(h|cc), remove types-inl.h. · ef35f11c
      jarin authored
      This CL removes the Config templatization from the types. It is not
      necessary anymore, after the HeapTypes have been removed.
      
      The CL also changes the type hierarchy - the specific type kinds are
      not inner classes of the Type class and they do not inherit from Type.
      This is partly because it seems impossible to make this work without
      templates. Instead, a new TypeBase class is introduced and all the
      structural (i.e., non-bitset) types inherit from it.
      
      The bitset type still requires the bit-munging hack and some nasty
      reinterpret-casts to pretend bitsets are of type Type*. Additionally,
      there is now the same hack for TypeBase - all pointers to the sub-types
      of TypeBase are reinterpret-casted to Type*. This is to keep the type
      constructors in inline method definitions (although it is unclear how
      much that actually buys us).
      
      In future, we would like to move to a model where we encapsulate Type*
      into a class (or possibly use Type where we used to use Type*). This
      would loosen the coupling between bitset size and pointer size, and
      eventually we would be able to have more bits.
      
      TBR=bradnelson@chromium.org
      
      Review URL: https://codereview.chromium.org/1655833002
      
      Cr-Commit-Position: refs/heads/master@{#33656}
      ef35f11c
  3. 10 Dec, 2015 1 commit
    • jarin's avatar
      [turbofan] Make MachineType a pair of enums. · bb2a830d
      jarin authored
      MachineType is now a class with two enum fields:
      - MachineRepresentation
      - MachineSemantic
      
      Both enums are usable on their own, and this change switches some places from using MachineType to use just MachineRepresentation. Most notably:
      - register allocator now uses just the representation.
      - Phi and Select nodes only refer to representations.
      
      Review URL: https://codereview.chromium.org/1513543003
      
      Cr-Commit-Position: refs/heads/master@{#32738}
      bb2a830d
  4. 27 Oct, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Introduce simplified NumberBitwise{Or,Xor,And} operators. · d08f9045
      bmeurer authored
      Currently we still (mis)used some machine operators in typed lowering
      (namely Word32Or, Word32Xor and Word32And). But these operators are
      "polymorphic" in the signedness of their inputs and output, hence the
      representation selection (and thereby simplified lowering) was unable to
      figure out whether a bitwise operation that was seen would produce an
      unsigned or a signed result. If such nodes also have frame state uses,
      the only safe choice was float64, which was not only a lot less ideal,
      but also the main cause of the for-in related deoptimizer loops.
      
      Adding dedicated NumberBitwiseOr, NumberBitwiseAnd and NumberBitwiseXor
      simplified operators not only gives us precise (and correct) typing for
      the bitwise operations, but also allows us to actually verify the graph
      properly after typed lowering.
      
      Drive-by-fix: Remove the double-to-smi magic from the Deoptimizer, which
      is responsible for various deopt-loops in TurboFan, and is no longer
      needed with the addition of the NumberBitwise operators.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1422213002
      
      Cr-Commit-Position: refs/heads/master@{#31594}
      d08f9045
  5. 29 Sep, 2015 1 commit
  6. 04 Sep, 2015 1 commit
  7. 02 Jun, 2015 1 commit
  8. 19 Mar, 2015 1 commit
    • Benedikt Meurer's avatar
      [turbofan] Remove indirection in JSToBoolean/JSUnaryNot lowering. · a75e4cea
      Benedikt Meurer authored
      This reduces the overhead of typed lowering, because we lower
      JSToBoolean/JSUnaryNot directly if possible, instead of first lowering
      to AnyToBoolean, and then letting the SimplifiedOperatorReducer do the
      further lowering.
      
      Also remove some obsolete tests from the cctest suite that have since
      been removed by proper unittests. And improve unitttest coverage for the
      typed lowering cases.
      
      R=mstarzinger@chromium.org
      
      Review URL: https://codereview.chromium.org/999173003
      
      Cr-Commit-Position: refs/heads/master@{#27295}
      a75e4cea
  9. 14 Jan, 2015 1 commit
  10. 13 Jan, 2015 1 commit
  11. 08 Jan, 2015 1 commit
  12. 05 Jan, 2015 1 commit
    • Benedikt Meurer's avatar
      [turbofan] Correctify JSToBoolean lowering. · 9def087e
      Benedikt Meurer authored
      Introduce a new AnyToBoolean simplified operator to handle the later
      lowering of boolean conversions. Previously we tried to hack that with
      the generic JSToBoolean, having its context set to zero, but that lead
      to various problems/bugs and did not handle all cases.
      
      TEST=cctest,unittests
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/800833003
      
      Cr-Commit-Position: refs/heads/master@{#25958}
      9def087e
  13. 23 Dec, 2014 1 commit
  14. 02 Dec, 2014 2 commits
  15. 29 Oct, 2014 1 commit
  16. 28 Oct, 2014 1 commit
  17. 01 Oct, 2014 3 commits
  18. 30 Sep, 2014 1 commit
  19. 24 Sep, 2014 1 commit
  20. 15 Sep, 2014 1 commit
  21. 12 Sep, 2014 1 commit