• Kevin Modzelewski's avatar
    Convert "a in (b, c)" to "a == b or a == c" · f3e03b35
    Kevin Modzelewski authored
    Do this by adding "contains" to our codegen type system, and
    implement a special contains on the unboxedtuple type.
    
    This makes this operation quite a lot faster, but it looks like
    largely because we don't implement a couple optimizations that
    we should:
    - we create a new tuple object every time we hit that line
    - our generic contains code goes through compare(), which returns
      a box (since "<" and friends can return non-bools), but contains
      will always return a bool, so we have a bunch of extra boxing/unboxing
    
    We probably should separate out the contains logic from the rest of the
    comparisons, since it works quite differently and doesn't
    gain anything by being there.
    f3e03b35
compvars.cpp 101 KB