[Compiler-sig] ast branch

Neal Norwitz neal@metaslash.com
Tue, 01 Apr 2003 17:25:46 -0500


On Tue, Apr 01, 2003 at 01:48:34PM -0500, Jeremy Hylton wrote:
> On Tue, 2003-04-01 at 07:32, Neal Norwitz wrote:
> > The AST branch seems to be making pretty good progress.  I just wanted
> > to collect the known issues so we don't overlap.  Brett Cannon had
> > mentioned that he was interested in the new compiler, so perhaps this
> > will provide some insight into the status.
> 
> Here are two important tasks:
> - Compute the stack depth from the basic blocks.
> - Create a valid lnotab.

Not sure about the first, but the second would be very helpful when
the interpreter crashes.

I ran with valgrind, there were a few checkins as a result.  There
are still some memory leaks and a problem with raise statements IIRC.


==3872== Invalid read of size 2
==3872==    at 0x8101E3F: ast_for_expr (Python/ast.c:700)
==3872==    by 0x8102D2A: ast_for_flow_stmt (Python/ast.c:1009)
==3872==    by 0x810425E: ast_for_stmt (Python/ast.c:1432)
==3872==    by 0x81036BF: ast_for_suite (Python/ast.c:1195)
==3872==    by 0x810135B: ast_for_funcdef (Python/ast.c:426)
==3872==    by 0x810437A: ast_for_stmt (Python/ast.c:1460)
==3872==    by 0x8100877: PyAST_FromNode (Python/ast.c:113)
==3872==    by 0x80C2483: PyParser_ASTFromFile (Python/pythonrun.c:1102)
==3872==    by 0x80B6E63: parse_source_module (Python/import.c:660)
==3872==    by 0x80B7115: load_source_module (Python/import.c:782)


==3872== 12 bytes in 1 blocks are definitely lost in loss record 4 of 241
==3872==    at 0x40168A70: malloc (vg_clientfuncs.c:100)
==3872==    by 0x806C3A7: PyObject_Malloc (Objects/obmalloc.c:854)
==3872==    by 0x81002C5: asdl_seq_new (Python/asdl.c:7)
==3872==    by 0x8101777: ast_for_listcomp (Python/ast.c:527)
==3872==    by 0x81019C6: ast_for_atom (Python/ast.c:579)
==3872==    by 0x8102261: ast_for_expr (Python/ast.c:779)
==3872==    by 0x81026B8: ast_for_testlist (Python/ast.c:872)
==3872==    by 0x8102C8B: ast_for_flow_stmt (Python/ast.c:1000)
==3872==    by 0x810425E: ast_for_stmt (Python/ast.c:1432)
==3872==    by 0x81036BF: ast_for_suite (Python/ast.c:1195)
==3872==    by 0x8103D76: ast_for_except_clause (Python/ast.c:1337)
==3872==    by 0x8103F65: ast_for_try_stmt (Python/ast.c:1369)
==3872==    by 0x8104366: ast_for_stmt (Python/ast.c:1458)
==3872==    by 0x81036BF: ast_for_suite (Python/ast.c:1195)
==3872==    by 0x810135B: ast_for_funcdef (Python/ast.c:426)

==3872== 12 bytes in 1 blocks are definitely lost in loss record 6 of 241
==3872==    at 0x40168A70: malloc (vg_clientfuncs.c:100)
==3872==    by 0x806C3A7: PyObject_Malloc (Objects/obmalloc.c:854)
==3872==    by 0x81002C5: asdl_seq_new (Python/asdl.c:7)
==3872==    by 0x8102A84: ast_for_exprlist (Python/ast.c:953)
==3872==    by 0x81016B7: ast_for_listcomp (Python/ast.c:515)
==3872==    by 0x81019C6: ast_for_atom (Python/ast.c:579)
==3872==    by 0x8102261: ast_for_expr (Python/ast.c:779)
==3872==    by 0x81026B8: ast_for_testlist (Python/ast.c:872)
==3872==    by 0x8102C8B: ast_for_flow_stmt (Python/ast.c:1000)
==3872==    by 0x810425E: ast_for_stmt (Python/ast.c:1432)
==3872==    by 0x81036BF: ast_for_suite (Python/ast.c:1195)
==3872==    by 0x8103D76: ast_for_except_clause (Python/ast.c:1337)
==3872==    by 0x8103F65: ast_for_try_stmt (Python/ast.c:1369)
==3872==    by 0x8104366: ast_for_stmt (Python/ast.c:1458)

==3872== 100 bytes in 5 blocks are definitely lost in loss record 106 of 241
==3872==    at 0x40168A70: malloc (vg_clientfuncs.c:100)
==3872==    by 0x81059DF: PyNode_New (Parser/node.c:10)
==3872==    by 0x80DBEBA: PyParser_New (Parser/parser.c:85)
==3872==    by 0x8054F77: parsetok (Parser/parsetok.c:100)
==3872==    by 0x8054F51: PyParser_ParseFileFlags (Parser/parsetok.c:81)
==3872==    by 0x80C246A: PyParser_ASTFromFile (Python/pythonrun.c:1099)
==3872==    by 0x80B6E63: parse_source_module (Python/import.c:660)
==3872==    by 0x80B7115: load_source_module (Python/import.c:782)
==3872==    by 0x80B7EDC: load_module (Python/import.c:1455)
==3872==    by 0x80B95A5: import_submodule (Python/import.c:1994)