Branch: Tag:


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

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: module.c,v 1.51 2008/03/30 01:24:10 mast Exp $ + || $Id: module.c,v 1.52 2008/04/14 10:14:40 grubba Exp $   */      #include "global.h"
383:   {    struct program *p = NULL;    volatile unsigned int e; -  struct lex save_lex; +     -  save_lex = lex; -  lex.current_line=1; -  lex.current_file=make_shared_string("-"); +  enter_compiler(NULL, 1);       start_new_program();    Pike_compiler->new_program->id=PROG___BUILTIN_ID;
428:    push_object(low_clone(p=end_program()));    f_add_constant(2);    free_program(p); -  free_string(lex.current_file); -  lex = save_lex; +  +  exit_compiler();   }      void exit_modules(void)