pike.git / src / pike_types.cmod

version» Context lines:

pike.git/src/pike_types.cmod:4144:    }   }      static void push_reverse_binop(enum pt_binop op)   {    /* Swap bits 1 & 2 in op to reverse the meanings of the arguments. */    push_binop((op & PT_BINOP_XNOR) |    ((op & PT_BINOP_MINUS) ? PT_BINOP_INVERSE_MINUS : 0) |    ((op & PT_BINOP_INVERSE_MINUS) ? PT_BINOP_MINUS : 0));   } + #endif      /** -  * Low-level intersection (aka And) of two types. +  * Low-level set operation (AND, MINUS, OR, etc) on two types.    *    * Note:    * There are two major operating modes; the external, where    * the two types have unrelated markers, which then need to    * be remapped in the result, and the internal, where the    * two types have related markers (this mode is used mainly    * when evaluating a type).    *    * The internal mode is indicated via the remap state being NULL.    */
pike.git/src/pike_types.cmod:4568:    free_type(tmp);    }       if (avoidable && bvoidable) {    /* Time to check the return types. */       if (!aret) aret = ai->cdr;    if (!bret) bret = bi->cdr;       tmp = low_type_binop(op, aret, bret, remap, -  aflags, bflags, remap_flags); +  aflags | PT_FLAG_CMP_VOIDABLE, +  bflags | PT_FLAG_CMP_VOIDABLE, remap_flags);    if (!tmp) goto function_fail;       nargs = pop_stack_mark();       push_finished_type(tmp);    free_type(tmp);       nargs--;    push_reverse_type(T_MANY);   
pike.git/src/pike_types.cmod:4606:    free_type(tmp);    if (got_empty) goto function_next;    }       if (avoidable && bvoidable) {    /* Time to check the return types. */       if (!aret) aret = ai->cdr;    if (!bret) bret = bi->cdr;    -  tmp = low_type_binop(op, aret, bret, NULL, aflags, bflags, -  remap_flags); +  tmp = low_type_binop(op, aret, bret, NULL, +  aflags | PT_FLAG_CMP_VOIDABLE, +  bflags | PT_FLAG_CMP_VOIDABLE, remap_flags);    if (!tmp) {    if (got_full) goto function_next;    got_empty = 1;    } else {    if (tmp == aret) {    got_full = 1;    } else {    free_type(tmp);    goto function_next;    }    free_type(tmp);    if (got_empty) goto function_next;    }    -  /* Note: We have pushed two typoe stack marks earlier, +  /* Note: We have pushed two type stack marks earlier,    * so we need to get rid of them before returning.    */    if (!got_full) {    pop_stack_mark();    pop_stack_mark();    return NULL;    }       pop_stack_mark();    push_remap_markers(a, NULL, remap, remap_flags);