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. 17 Feb, 2016 1 commit
  5. 16 Feb, 2016 1 commit
  6. 02 Feb, 2016 1 commit
    • 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. 27 Jan, 2016 1 commit
  8. 26 Jan, 2016 1 commit
    • jarin's avatar
      Replace HeapType with a non-templated FieldType class. · cfaeb63b
      jarin authored
      This replace HeapType with a dedicated class that implements just what we need for field type tracking. In the next CL, I plan to remove FieldType::Iterator because FieldType can iterate over at most one map.
      
      The ultimate plan is to get rid of templates in types.(h|cc) and remove type-inl.h.
      
      TBR=rossberg@chromium.org
      
      Review URL: https://codereview.chromium.org/1636013002
      
      Cr-Commit-Position: refs/heads/master@{#33521}
      cfaeb63b
  9. 25 Jan, 2016 1 commit
    • bmeurer's avatar
      [for-in] Further refactorings and unification around for-in. · 88f9995d
      bmeurer authored
      Cleanup %ForInPrepare runtime entry, and unify common logic with
      %ForInEnumerate (renamed from %GetPropertyNamesFast). Also introduce
      a TupleType to properly type JSForInPrepare and its projections w/o
      special hacks in the Typer. And fix %ForInNext and JSForInNext to be
      consistent with fullcodegen again (after the proxy refactorings last
      quarter).
      
      R=jarin@chromium.org
      BUG=v8:3650
      LOG=n
      
      Review URL: https://codereview.chromium.org/1631583002
      
      Cr-Commit-Position: refs/heads/master@{#33487}
      88f9995d
  10. 10 Nov, 2015 1 commit
  11. 05 Nov, 2015 1 commit
  12. 04 Nov, 2015 1 commit
    • bmeurer's avatar
      [types] Use unified integral representation bits. · 6471fbf7
      bmeurer authored
      We don't need to distinguish between signed and unsigned integral
      representations in the big boy type system. It actually even hurts
      in some cases. The representation is only about the way the values
      are mapped to bits in memory/registers, but the interpretation of
      the bits is specified by the semantic dimension.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1416953006
      
      Cr-Commit-Position: refs/heads/master@{#31771}
      6471fbf7
  13. 30 Sep, 2015 1 commit
  14. 17 Sep, 2015 1 commit
  15. 15 Sep, 2015 1 commit
  16. 14 Sep, 2015 1 commit
  17. 03 Sep, 2015 1 commit
  18. 31 Aug, 2015 1 commit
  19. 21 Aug, 2015 1 commit
    • rossberg's avatar
      [simd] Introduce SIMD types (as classes) · a60f1922
      rossberg authored
      - Introduce a proper bit for SIMD primitive values.
      - Introduce constructors for individual SIMD types. These are currently just classes, which seems good enough for now, given that we always have exactly one global map per SIMD type.
      
      The only problem with using class types for SIMD is that a SIMD constant won't be a subtype of its specific type, only of the general SIMD type. But until we actually introduce SIMD constants into the compiler that shouldn't matter.
      
      R=jarin@chromium.org
      BUG=
      
      Review URL: https://codereview.chromium.org/1303863002
      
      Cr-Commit-Position: refs/heads/master@{#30294}
      a60f1922
  20. 13 Aug, 2015 1 commit
  21. 23 Jun, 2015 1 commit
  22. 22 Jun, 2015 1 commit
  23. 15 Jun, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Remove the TryLowerDirectJSCall hack from generic lowering. · 6e5b9ffe
      bmeurer authored
      The TryLowerDirectJSCall method tried to lower to a direct JavaScript
      function call depending on the type of the receiver, but only if the
      target is a cosntant JSFunction. Since this depends on types and is not
      required for correctness, it shouldn't be part of generic lowering
      anyway. So this functionality was moved to typed lowering instead, and
      we use proper types for the target instead.
      
      R=mstarzinger@chromium.org
      
      Review URL: https://codereview.chromium.org/1182193005
      
      Cr-Commit-Position: refs/heads/master@{#29028}
      6e5b9ffe
  24. 15 Apr, 2015 1 commit
    • scottmg's avatar
      Make BitsetType enum uint32_t to avoid narrowing warnings · df087b23
      scottmg authored
      enum defaults to signed on win, and kTagged has 1<<31 causing
      warning.
      
      Full errors:
      
      d:\src\cr3\src\v8\src\types.cc(1259): error C2220: warning treated as error - no 'object' file generated
      d:\src\cr3\src\v8\src\types.cc(1241): note: while compiling class template member function 'void v8::internal::TypeImpl<v8::internal::ZoneTypeConfig>::BitsetType::Print(std::ostream &,v8::internal::TypeImpl<v8::internal::ZoneTypeConfig>::bitset)'
      d:\src\cr3\src\v8\src\types.cc(1283): note: see reference to function template instantiation 'void v8::internal::TypeImpl<v8::internal::ZoneTypeConfig>::BitsetType::Print(std::ostream &,v8::internal::TypeImpl<v8::internal::ZoneTypeConfig>::bitset)' being compiled
      d:\src\cr3\src\v8\src\types.cc(1355): note: see reference to class template instantiation 'v8::internal::TypeImpl<v8::internal::ZoneTypeConfig>::BitsetType' being compiled
      d:\src\cr3\src\v8\src\types.cc(1259): warning C4838: conversion from 'int' to 'const v8::internal::TypeImpl<v8::internal::ZoneTypeConfig>::bitset' requires a narrowing conversion
      d:\src\cr3\src\v8\src\types.cc(1259): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
      d:\src\cr3\src\v8\src\types.cc(323): warning C4838: conversion from '' to 'v8::internal::TypeImpl<v8::internal::ZoneTypeConfig>::bitset' requires a narrowing conversion
      d:\src\cr3\src\v8\src\types.cc(323): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
      d:\src\cr3\src\v8\src\types.cc(315): note: while compiling class template static data member 'const v8::internal::TypeImpl<v8::internal::ZoneTypeConfig>::BitsetType::Boundary v8::internal::TypeImpl<v8::internal::ZoneTypeConfig>::BitsetType::BoundariesArray[]'
      d:\src\cr3\src\v8\src\types.cc(1259): warning C4838: conversion from 'int' to 'const v8::internal::TypeImpl<v8::internal::HeapTypeConfig>::bitset' requires a narrowing conversion
      d:\src\cr3\src\v8\src\types.cc(1259): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
      d:\src\cr3\src\v8\src\types.cc(1241): note: while compiling class template member function 'void v8::internal::TypeImpl<v8::internal::HeapTypeConfig>::BitsetType::Print(std::ostream &,v8::internal::TypeImpl<v8::internal::HeapTypeConfig>::bitset)'
      d:\src\cr3\src\v8\src\types.cc(1283): note: see reference to function template instantiation 'void v8::internal::TypeImpl<v8::internal::HeapTypeConfig>::BitsetType::Print(std::ostream &,v8::internal::TypeImpl<v8::internal::HeapTypeConfig>::bitset)' being compiled
      d:\src\cr3\src\v8\src\types.cc(1359): note: see reference to class template instantiation 'v8::internal::TypeImpl<v8::internal::HeapTypeConfig>::BitsetType' being compiled
      d:\src\cr3\src\v8\src\types.cc(323): warning C4838: conversion from '' to 'v8::internal::TypeImpl<v8::internal::HeapTypeConfig>::bitset' requires a narrowing conversion
      d:\src\cr3\src\v8\src\types.cc(323): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
      d:\src\cr3\src\v8\src\types.cc(315): note: while compiling class template static data member 'const v8::internal::TypeImpl<v8::internal::HeapTypeConfig>::BitsetType::Boundary v8::internal::TypeImpl<v8::internal::HeapTypeConfig>::BitsetType::BoundariesArray[]'
      
      LOG=N
      R=jochen@chromium.org
      BUG=440500
      
      Review URL: https://codereview.chromium.org/1055933004
      
      Cr-Commit-Position: refs/heads/master@{#27854}
      df087b23
  25. 10 Apr, 2015 1 commit
  26. 02 Mar, 2015 1 commit
  27. 12 Feb, 2015 1 commit
  28. 28 Jan, 2015 2 commits
  29. 22 Jan, 2015 1 commit
    • bmeurer's avatar
      Revert of Steps towards unification of number bitset and range types.... · 76193749
      bmeurer authored
      Revert of Steps towards unification of number bitset and range types. (patchset #4 id:60001 of https://codereview.chromium.org/837723006/)
      
      Reason for revert:
      Breaks test-types/Maybe, i.e.
      
      out/Release/cctest --random-seed=-707413401 test-types/Maybe
      
      started failing afterwards
      
      Original issue's description:
      > Steps towards unification of number bitset and range types.
      >
      > - New invariant on union types: if the union has a range then the number
      >   bits in the bitset must be cleared.
      >
      > - Various tweaks in intersection and union to satisfy the invariant.
      >
      > - Exposed and used representation bits in range types (and the Limits
      >   helper class).
      >
      > - Implemented Glb for ranges so that the Is predicate handles
      >   ranges correctly.
      >
      > - Change typer weakening so that it does not rely on GetRange.
      >   However, the code still seems to be a bit fragile.
      >
      > - Removed the Smi types from the type system core, instead introduced
      >   Signed31, Unsigned30 and created constructors for Small(Un)Signed
      >   that point to the right type for the architecture.
      >
      > - Punched a hole in the config to be able to get to the isolate so
      >   that it is possible to allocate heap numbers for newly created
      >   ranges.
      >
      > Patch by jarin@chromium.prg, original review here:
      > https://codereview.chromium.org/795713003/
      >
      > TBR=jarin@chromium.org
      > BUG=
      >
      > Committed: https://crrev.com/2764fd8d1a266a9136c987c2483492113b0c8d80
      > Cr-Commit-Position: refs/heads/master@{#26197}
      
      TBR=jkummerow@chromium.org,rossberg@chromium.org
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=
      
      Review URL: https://codereview.chromium.org/868583002
      
      Cr-Commit-Position: refs/heads/master@{#26207}
      76193749
  30. 21 Jan, 2015 1 commit
    • rossberg's avatar
      Steps towards unification of number bitset and range types. · 2764fd8d
      rossberg authored
      - New invariant on union types: if the union has a range then the number
        bits in the bitset must be cleared.
      
      - Various tweaks in intersection and union to satisfy the invariant.
      
      - Exposed and used representation bits in range types (and the Limits
        helper class).
      
      - Implemented Glb for ranges so that the Is predicate handles
        ranges correctly.
      
      - Change typer weakening so that it does not rely on GetRange.
        However, the code still seems to be a bit fragile.
      
      - Removed the Smi types from the type system core, instead introduced
        Signed31, Unsigned30 and created constructors for Small(Un)Signed
        that point to the right type for the architecture.
      
      - Punched a hole in the config to be able to get to the isolate so
        that it is possible to allocate heap numbers for newly created
        ranges.
      
      Patch by jarin@chromium.prg, original review here:
      https://codereview.chromium.org/795713003/
      
      TBR=jarin@chromium.org
      BUG=
      
      Review URL: https://codereview.chromium.org/837723006
      
      Cr-Commit-Position: refs/heads/master@{#26197}
      2764fd8d
  31. 12 Dec, 2014 1 commit
  32. 11 Dec, 2014 2 commits
  33. 10 Dec, 2014 3 commits
  34. 20 Nov, 2014 1 commit
  35. 13 Nov, 2014 2 commits