diff options
Diffstat (limited to 'Python/compile.c')
| -rw-r--r-- | Python/compile.c | 21 | 
1 files changed, 11 insertions, 10 deletions
| diff --git a/Python/compile.c b/Python/compile.c index 3d7152cd28..855ec464af 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -30,8 +30,6 @@  #include "symtable.h"  #include "opcode.h" -int Py_OptimizeFlag = 0; -  #define DEFAULT_BLOCK_SIZE 16  #define DEFAULT_BLOCKS 8  #define DEFAULT_CODE_SIZE 128 @@ -881,6 +879,7 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg)          case BINARY_POWER:          case BINARY_MULTIPLY: +        case BINARY_MATRIX_MULTIPLY:          case BINARY_MODULO:          case BINARY_ADD:          case BINARY_SUBTRACT: @@ -895,6 +894,7 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg)          case INPLACE_ADD:          case INPLACE_SUBTRACT:          case INPLACE_MULTIPLY: +        case INPLACE_MATRIX_MULTIPLY:          case INPLACE_MODULO:              return -1;          case STORE_SUBSCR: @@ -1938,7 +1938,7 @@ compiler_if(struct compiler *c, stmt_ty s)      } else if (constant == 1) {          VISIT_SEQ(c, stmt, s->v.If.body);      } else { -        if (s->v.If.orelse) { +        if (asdl_seq_LEN(s->v.If.orelse)) {              next = compiler_new_block(c);              if (next == NULL)                  return 0; @@ -1948,8 +1948,8 @@ compiler_if(struct compiler *c, stmt_ty s)          VISIT(c, expr, s->v.If.test);          ADDOP_JABS(c, POP_JUMP_IF_FALSE, next);          VISIT_SEQ(c, stmt, s->v.If.body); -        ADDOP_JREL(c, JUMP_FORWARD, end); -        if (s->v.If.orelse) { +        if (asdl_seq_LEN(s->v.If.orelse)) { +            ADDOP_JREL(c, JUMP_FORWARD, end);              compiler_use_next_block(c, next);              VISIT_SEQ(c, stmt, s->v.If.orelse);          } @@ -2624,6 +2624,8 @@ binop(struct compiler *c, operator_ty op)          return BINARY_SUBTRACT;      case Mult:          return BINARY_MULTIPLY; +    case MatMult: +        return BINARY_MATRIX_MULTIPLY;      case Div:          return BINARY_TRUE_DIVIDE;      case Mod: @@ -2688,6 +2690,8 @@ inplace_binop(struct compiler *c, operator_ty op)          return INPLACE_SUBTRACT;      case Mult:          return INPLACE_MULTIPLY; +    case MatMult: +        return INPLACE_MATRIX_MULTIPLY;      case Div:          return INPLACE_TRUE_DIVIDE;      case Mod: @@ -2749,8 +2753,7 @@ compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx)              optype = OP_FAST;          break;      case GLOBAL_IMPLICIT: -        if (c->u->u_ste->ste_type == FunctionBlock && -            !c->u->u_ste->ste_unoptimized) +        if (c->u->u_ste->ste_type == FunctionBlock)              optype = OP_GLOBAL;          break;      case GLOBAL_EXPLICIT: @@ -4181,9 +4184,7 @@ compute_code_flags(struct compiler *c)      int flags = 0;      Py_ssize_t n;      if (ste->ste_type == FunctionBlock) { -        flags |= CO_NEWLOCALS; -        if (!ste->ste_unoptimized) -            flags |= CO_OPTIMIZED; +        flags |= CO_NEWLOCALS | CO_OPTIMIZED;          if (ste->ste_nested)              flags |= CO_NESTED;          if (ste->ste_generator) | 
