1. 27 Feb, 2016 1 commit
  2. 26 Feb, 2016 1 commit
  3. 24 Feb, 2016 1 commit
    • bmeurer's avatar
      [compiler] Drop the CompareNilIC. · 666aec03
      bmeurer authored
      Since both null and undefined are also marked as undetectable now, we
      can just test that bit instead of having the CompareNilIC try to collect
      feedback to speed up the general case (without the undetectable bit
      being used).
      
      Drive-by-fix: Update the type system to match the new handling of
      undetectable in the runtime.
      
      R=danno@chromium.org
      
      Review URL: https://codereview.chromium.org/1722193002
      
      Cr-Commit-Position: refs/heads/master@{#34237}
      666aec03
  4. 19 Feb, 2016 2 commits
  5. 12 Feb, 2016 1 commit
  6. 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
  7. 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
  8. 17 Nov, 2015 1 commit
  9. 30 Oct, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Add support for storing to double fields. · 0df0e254
      bmeurer authored
      Adds new Guard[Type] common operator, which takes value and control
      inputs and records a guaranty that a certain value has a certain type
      in that control path.  This is some kind of ad-hoc SSI similar to what
      we have to do in Crankshaft in some places.
      
      Also introduces an ObjectIsNumber simplified operator, which checks
      whether a certain value is a number (either a Smi or a HeapNumber).
      
      This doesn't yet support transitioning stores to double fields, which
      require support for allocating mutable heap numbers.
      
      R=jarin@chromium.org
      BUG=v8:4470
      LOG=n
      
      Review URL: https://codereview.chromium.org/1420283009
      
      Cr-Commit-Position: refs/heads/master@{#31675}
      0df0e254
  10. 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
  11. 29 Sep, 2015 1 commit
  12. 04 Sep, 2015 1 commit
  13. 03 Jul, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Right hand side of shifts needs ToUint32. · 5f288c20
      bmeurer authored
      Currently we lower shifts directly to machine operators, and add an
      appropriate Word32And to implement the & 0x1F operation on the right
      hand side required by the specification. However for Word32And we assume
      Int32 in simplified lowering, which is basically changes the right hand
      side bit interpretation for the shifts from Uint32 to Int32, which is
      obviously wrong. So now we represent that explicitly by proper
      simplified operators for the shifts, which are lowered to machine in
      simplified lowering.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1213803008
      
      Cr-Commit-Position: refs/heads/master@{#29465}
      5f288c20
  14. 02 Jun, 2015 1 commit
  15. 04 May, 2015 1 commit
  16. 20 Apr, 2015 1 commit
  17. 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
  18. 14 Jan, 2015 1 commit
  19. 13 Jan, 2015 1 commit
  20. 08 Jan, 2015 1 commit
  21. 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
  22. 22 Dec, 2014 1 commit
  23. 02 Dec, 2014 1 commit
  24. 29 Oct, 2014 1 commit
  25. 20 Oct, 2014 1 commit
  26. 07 Oct, 2014 2 commits
  27. 06 Oct, 2014 1 commit
  28. 02 Oct, 2014 1 commit
  29. 01 Oct, 2014 1 commit
  30. 30 Sep, 2014 1 commit
  31. 24 Sep, 2014 1 commit
  32. 17 Sep, 2014 1 commit
  33. 15 Sep, 2014 1 commit
  34. 12 Sep, 2014 1 commit
  35. 02 Sep, 2014 1 commit