# File lib/sass/script/tree/operation.rb, line 63
    def _perform(environment)
      value1 = @operand1.perform(environment)

      # Special-case :and and :or to support short-circuiting.
      if @operator == :and
        return value1.to_bool ? @operand2.perform(environment) : value1
      elsif @operator == :or
        return value1.to_bool ? value1 : @operand2.perform(environment)
      end

      value2 = @operand2.perform(environment)

      if (value1.is_a?(Sass::Script::Value::Null) || value2.is_a?(Sass::Script::Value::Null)) &&
          @operator != :eq && @operator != :neq
        raise Sass::SyntaxError.new(
          "Invalid null operation: \"#{value1.inspect} #{@operator} #{value2.inspect}\".")
      end

      if css_variable_warning && @operator == :div &&
         !(value1.is_a?(Sass::Script::Value::Number) && value1.original &&
           value2.is_a?(Sass::Script::Value::Number) && value2.original) &&
         !(value1.is_a?(Sass::Script::Value::String) && value2.is_a?(Sass::Script::Value::String))
        css_variable_warning.warn!
      end

      begin
        result = opts(value1.send(@operator, value2))
      rescue NoMethodError => e
        raise e unless e.name.to_s == @operator.to_s
        raise Sass::SyntaxError.new("Undefined operation: \"#{value1} #{@operator} #{value2}\".")
      end

      if (@operator == :eq || @operator == :neq) && value1.is_a?(Sass::Script::Value::Number) &&
         value2.is_a?(Sass::Script::Value::Number) && value1.unitless? != value2.unitless? &&
         result == (if @operator == :eq
                      Sass::Script::Value::Bool::TRUE
                    else
                      Sass::Script::Value::Bool::FALSE
                    end)

        operation = "#{value1.to_sass} #{@operator == :eq ? '==' : '!='} #{value2.to_sass}"
        future_value = @operator == :neq
        Sass::Util.sass_warn "DEPRECATION WARNING on line \#{line}\#{\" of \#{filename}\" if filename}:\nThe result of `\#{operation}` will be `\#{future_value}` in future releases of Sass.\nUnitless numbers will no longer be equal to the same numbers with units.\n"
      end

      result
    end