Branch: Tag:

2008-04-14

2008-04-14 10:14:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Pike compiler mega patch.
Added predef::CompilerEnvironment, which is a wrapper for struct compilation.
Moved the definition of struct compilation to the new header file "pike_compiler.h".
The compilation struct is now contained in the current context in the current_object during compilation.
The global variable lex is no more, it has moved into the compilation struct.
Added enter_compiler() and exit_compiler().
predef::compile() is now shorthand for predef::CompilerContext()->compile().

Rev: src/builtin_functions.c:1.652
Rev: src/compilation.h:1.35
Rev: src/docode.c:1.197
Rev: src/docode.h:1.20
Rev: src/dynamic_load.c:1.90
Rev: src/encode.c:1.263
Rev: src/language.yacc:1.411
Rev: src/las.c:1.406
Rev: src/lex.c:1.121
Rev: src/lex.h:1.36
Rev: src/lexer.h:1.66
Rev: src/module.c:1.52
Rev: src/object.c:1.284
Rev: src/operators.c:1.230
Rev: src/pike_compiler.h:1.1
Rev: src/pike_types.c:1.321
Rev: src/program.c:1.660
Rev: src/program.h:1.237

2:   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: dynamic_load.c,v 1.89 2006/07/05 19:06:32 mast Exp $ + || $Id: dynamic_load.c,v 1.90 2008/04/14 10:14:38 grubba Exp $   */      #ifdef TESTING
389:    if (p) {    free_program(p);    } -  free_string(lex.current_file); +     compilation_depth = save->compilation_depth; -  lex = save->lex; +    }      /*! @decl program load_module(string module_name)
538:    new_module->init=init;    new_module->exit=exit;    -  save.lex = lex; -  lex.current_line=1; -  lex.current_file=make_shared_string("-"); +  enter_compiler(new_module->name, 1); +     save.compilation_depth=compilation_depth;    compilation_depth=-1;    start_new_program();
570:    pop_n_elems(args);    {    struct program *p = end_program(); -  free_string(lex.current_file); +  exit_compiler();    compilation_depth = save.compilation_depth; -  lex = save.lex; +     if (p) {    if (   #if 0