diff Python/compile.c @ 23280:9e22a8702de2 legacy-trunk

If Py_OptimizeFlag is false then always evaluate assert conditions, don't test __debug__ at runtime. Closes SF patch #548833.
author Neil Schemenauer <nascheme@enme.ucalgary.ca>
date Fri, 26 Apr 2002 01:58:53 +0000
parents e16dbf875303
children 9e67a0d5705f
line wrap: on
line diff
--- a/Python/compile.c	Fri Apr 26 00:53:34 2002 +0000
+++ b/Python/compile.c	Fri Apr 26 01:58:53 2002 +0000
@@ -2664,27 +2664,20 @@
 static void
 com_assert_stmt(struct compiling *c, node *n)
 {
-	int a = 0, b = 0;
+	int a = 0;
 	int i;
 	REQ(n, assert_stmt); /* 'assert' test [',' test] */
-	/* Generate code like for
+	if (Py_OptimizeFlag)
+		return;
+	/* Generate code like
 	   
-	   if __debug__:
-	      if not <test>:
+	     if not <test>:
 	         raise AssertionError [, <message>]
 
 	   where <message> is the second test, if present.
 	*/
-
-	if (Py_OptimizeFlag)
-		return;
-	com_addop_name(c, LOAD_GLOBAL, "__debug__");
-	com_push(c, 1);
-	com_addfwref(c, JUMP_IF_FALSE, &a);
-	com_addbyte(c, POP_TOP);
-	com_pop(c, 1);
 	com_node(c, CHILD(n, 1));
-	com_addfwref(c, JUMP_IF_TRUE, &b);
+	com_addfwref(c, JUMP_IF_TRUE, &a);
 	com_addbyte(c, POP_TOP);
 	com_pop(c, 1);
 	/* Raise that exception! */
@@ -2696,9 +2689,8 @@
 	com_addoparg(c, RAISE_VARARGS, i);
 	com_pop(c, i);
 	/* The interpreter does not fall through */
-	/* All jumps converge here */
+	/* Jump ends up here */
 	com_backpatch(c, a);
-	com_backpatch(c, b);
 	com_addbyte(c, POP_TOP);
 }