Ignore:
Timestamp:
11/15/17 12:14:34 (7 years ago)
Author:
yushan
Message:

dev_omp

Location:
XIOS/dev/branch_openmp/src/parse_expr
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_openmp/src/parse_expr/lex_parser.cpp

    r1134 r1328  
    347347extern char *yytext; 
    348348#define yytext_ptr yytext 
    349  
    350349static yyconst flex_int16_t yy_nxt[][128] = 
    351350    { 
  • XIOS/dev/branch_openmp/src/parse_expr/yacc_parser.cpp

    r1134 r1328  
    8080} 
    8181 
    82   static IFilterExprNode* parsed; 
    83   static std::string globalInputText; 
    84   static std::string *globalInputText_ptr = 0; 
    85   static size_t globalReadOffset = 0; 
    86   #pragma omp threadprivate(parsed, globalInputText_ptr, globalReadOffset) 
    87    
     82  IFilterExprNode* parsed; 
     83  std::string globalInputText; 
     84  size_t globalReadOffset = 0; 
     85 
    8886  int readInputForLexer(char* buffer, size_t* numBytesRead, size_t maxBytesToRead) 
    8987  { 
    90     if(globalInputText_ptr == 0) globalInputText_ptr = new std::string; 
    9188    size_t numBytesToRead = maxBytesToRead; 
    92     size_t bytesRemaining = (*globalInputText_ptr).length()-globalReadOffset; 
     89    size_t bytesRemaining = globalInputText.length()-globalReadOffset; 
    9390    size_t i; 
    9491    if (numBytesToRead > bytesRemaining) numBytesToRead = bytesRemaining; 
    95     for (i = 0; i < numBytesToRead; i++) buffer[i] = (*globalInputText_ptr).c_str()[globalReadOffset + i]; 
     92    for (i = 0; i < numBytesToRead; i++) buffer[i] = globalInputText.c_str()[globalReadOffset + i]; 
    9693    *numBytesRead = numBytesToRead; 
    9794    globalReadOffset += numBytesToRead; 
     
    20052002  IFilterExprNode* parseExpr(const string& strExpr) 
    20062003  { 
    2007     #pragma omp critical (_parser) 
    2008     { 
    2009       if(globalInputText_ptr == 0) globalInputText_ptr = new std::string; 
    2010       (*globalInputText_ptr).assign (strExpr); 
    2011       globalReadOffset = 0; 
    2012       yyparse(); 
    2013     } 
     2004    globalInputText = strExpr; 
     2005    globalReadOffset = 0; 
     2006    yyparse(); 
    20142007    return parsed; 
    20152008  } 
     
    20172010 
    20182011 
    2019  
  • XIOS/dev/branch_openmp/src/parse_expr/yacc_parser.yacc

    r1134 r1328  
    1515} 
    1616 
    17   static IFilterExprNode* parsed; 
    18   static std::string globalInputText; 
    19   static std::string *globalInputText_ptr = 0; 
    20   static size_t globalReadOffset = 0; 
    21   #pragma omp threadprivate(parsed, globalInputText_ptr, globalReadOffset) 
    22    
     17  IFilterExprNode* parsed; 
     18  std::string globalInputText; 
     19  size_t globalReadOffset = 0; 
     20 
    2321  int readInputForLexer(char* buffer, size_t* numBytesRead, size_t maxBytesToRead) 
    2422  { 
    25     if(globalInputText_ptr == 0) globalInputText_ptr = new std::string; 
    2623    size_t numBytesToRead = maxBytesToRead; 
    27     size_t bytesRemaining = (*globalInputText_ptr).length()-globalReadOffset; 
     24    size_t bytesRemaining = globalInputText.length()-globalReadOffset; 
    2825    size_t i; 
    2926    if (numBytesToRead > bytesRemaining) numBytesToRead = bytesRemaining; 
    30     for (i = 0; i < numBytesToRead; i++) buffer[i] = (*globalInputText_ptr).c_str()[globalReadOffset + i]; 
     27    for (i = 0; i < numBytesToRead; i++) buffer[i] = globalInputText.c_str()[globalReadOffset + i]; 
    3128    *numBytesRead = numBytesToRead; 
    3229    globalReadOffset += numBytesToRead; 
     
    148145  IFilterExprNode* parseExpr(const string& strExpr) 
    149146  { 
    150     #pragma omp critical (_parser) 
    151     { 
    152       if(globalInputText_ptr == 0) globalInputText_ptr = new std::string; 
    153       (*globalInputText_ptr).assign (strExpr); 
    154       globalReadOffset = 0; 
    155       yyparse(); 
    156     } 
     147    globalInputText = strExpr; 
     148    globalReadOffset = 0; 
     149    yyparse(); 
    157150    return parsed; 
    158151  } 
Note: See TracChangeset for help on using the changeset viewer.