forceinline Incremental<View>::Incremental(Home home, ViewArray<View>& x, const TupleSet& t) : Base<View,false>(home,x,t), support_data(NULL), unassigned(x.size()), ac(home) { init_support(home); // Post advisors for (int i = x.size(); i--; ) if (x[i].assigned()) { --unassigned; } else { x[i].subscribe(home,*new (home) SupportAdvisor(home,*this,ac,i)); } Region r(home); // Add initial supports BitSet* dom = r.alloc<BitSet>(x.size()); init_dom(home, dom); for (int i = x.size(); i--; ) for (ViewValues<View> vv(x[i]); vv(); ++vv) find_support(home, dom, i, vv.val()); // Work to be done or subsumption if (!w_support.empty() || !w_remove.empty() || (unassigned == 0)) View::schedule(home,*this, (unassigned != x.size()) ? ME_INT_VAL : ME_INT_DOM); }
int main( int argc, char **argv, char **envp ) { int dictsize = DEF_DICTSIZE; /* pass alternate dict size as an arg */ init_support(); /* FIX - change to loop around evaluate - this also means move below init_dictionary */ /* debug is a define for user area */ /* if ( (argc > 1) && strcmp( *(argv+1), "-d" ) == 0 ) debug = 1; */ init_dictionary( dictsize ); StartVM( "cold", argc, argv ); }
forceinline Incremental<View>::Incremental(Space& home, bool share, Incremental<View>& p) : Base<View,false>(home,share,p), support_data(NULL), unassigned(p.unassigned) { ac.update(home,share,p.ac); init_support(home); for (int i = static_cast<int>(ts()->domsize*x.size()); i--; ) { SupportEntry** n = &(support_data[i]); SupportEntry* o = p.support_data[i]; while (o != NULL) { // Allocate new support entry SupportEntry* s = new (home) SupportEntry(o->t); // Link in support entry (*n) = s; n = s->nextRef(); // move to next one o = o->next(); } *n = NULL; } }
int mcpp_lib_main #else int main #endif ( int argc, char ** argv ) { char * in_file = NULL; char * out_file = NULL; char * stdin_name = "<stdin>"; if (setjmp( error_exit) == -1) { errors++; goto fatal_error_exit; } #if MCPP_LIB /* Initialize global and static variables. */ init_main(); init_directive(); init_eval(); init_support(); init_system(); #endif fp_in = stdin; fp_out = stdout; fp_err = stderr; fp_debug = stdout; /* * Debugging information is output to stdout in order to * synchronize with preprocessed output. */ inc_dirp = &null; /* Initialize to current (null) directory */ cur_fname = cur_fullname = "(predefined)"; /* For predefined macros */ init_defines(); /* Predefine macros */ mb_init(); /* Should be initialized prior to get options */ do_options( argc, argv, &in_file, &out_file); /* Command line options */ /* Open input file, "-" means stdin. */ if (in_file != NULL && ! str_eq( in_file, "-")) { if ((fp_in = fopen( in_file, "r")) == NULL) { mcpp_fprintf( ERR, "Can't open input file \"%s\".\n", in_file); errors++; #if MCPP_LIB goto fatal_error_exit; #else return( IO_ERROR); #endif } } else { in_file = stdin_name; } /* Open output file, "-" means stdout. */ if (out_file != NULL && ! str_eq( out_file, "-")) { if ((fp_out = fopen( out_file, "w")) == NULL) { mcpp_fprintf( ERR, "Can't open output file \"%s\".\n", out_file); errors++; #if MCPP_LIB goto fatal_error_exit; #else return( IO_ERROR); #endif } fp_debug = fp_out; } if (option_flags.q) { /* Redirect diagnostics */ if ((fp_err = fopen( "mcpp.err", "a")) == NULL) { errors++; mcpp_fprintf( OUT, "Can't open \"mcpp.err\"\n"); #if MCPP_LIB goto fatal_error_exit; #else return( IO_ERROR); #endif } } init_sys_macro(); /* Initialize system-specific macros */ add_file( fp_in, NULL, in_file, in_file, FALSE); /* "open" main input file */ infile->dirp = inc_dirp; infile->sys_header = FALSE; cur_fullname = in_file; if (mkdep && str_eq( infile->real_fname, stdin_name) == FALSE) put_depend( in_file); /* Putout target file name */ at_start(); /* Do the pre-main commands */ mcpp_main(); /* Process main file */ if (mkdep) put_depend( NULL); /* Append '\n' to dependency line */ at_end(); /* Do the final commands */ fatal_error_exit: #if MCPP_LIB /* Free malloced memory */ if (mcpp_debug & MACRO_CALL) { if (in_file != stdin_name) free( in_file); } clear_filelist(); clear_symtable(); #endif if (fp_in != stdin) fclose( fp_in); if (fp_out != stdout) fclose( fp_out); if (fp_err != stderr) fclose( fp_err); if (mcpp_debug & MEMORY) print_heap(); if (errors > 0 && option_flags.no_source_line == FALSE) { mcpp_fprintf( ERR, "%d error%s in preprocessor.\n", errors, (errors == 1) ? "" : "s"); return IO_ERROR; } return IO_SUCCESS; /* No errors */ }