X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=toke.c;h=78ae3869676a477edec71c4b2c2af28d696b81ba;hb=2ddcc7aa6c936ba8e7a9703319dfd8959bb54574;hp=705b9ab8b77dddeae3be1ff0113b60fd87cbbde9;hpb=c03294656c9980c235cc5951a63088fd96d33704;p=p5sagit%2Fp5-mst-13.2.git diff --git a/toke.c b/toke.c index 705b9ab..78ae386 100644 --- a/toke.c +++ b/toke.c @@ -226,6 +226,7 @@ void lex_start(line) SV *line; { + dTHR; char *s; STRLEN len; @@ -309,6 +310,7 @@ static void incline(s) char *s; { + dTHR; char *t; char *n; char ch; @@ -459,6 +461,7 @@ expectation x; char *s; #endif /* CAN_PROTOTYPE */ { + dTHR; yylval.ival = f; CLINE; expect = x; @@ -651,6 +654,7 @@ sublex_start() static I32 sublex_push() { + dTHR; push_scope(); lex_state = sublex_info.super_state; @@ -755,7 +759,7 @@ char *start; register char *d = SvPVX(sv); bool dorange = FALSE; I32 len; - char *leave = + char *leaveit = lex_inpat ? "\\.^$@AGZdDwWsSbB+*?|()-nrtfeaxc0123456789[{]} \t\n\r\f\v#" : (lex_inwhat & OP_TRANS) @@ -801,7 +805,7 @@ char *start; } if (*s == '\\' && s+1 < send) { s++; - if (*s && strchr(leave, *s)) { + if (*s && strchr(leaveit, *s)) { *d++ = '\\'; *d++ = *s++; continue; @@ -2735,7 +2739,7 @@ yylex() case KEY_DESTROY: case KEY_BEGIN: case KEY_END: - case KEY_RESTART: + case KEY_INIT: if (expect == XSTATE) { s = bufptr; goto really_sub; @@ -3927,6 +3931,9 @@ I32 len; case 'h': if (strEQ(d,"hex")) return -KEY_hex; break; + case 'I': + if (strEQ(d,"INIT")) return KEY_INIT; + break; case 'i': switch (len) { case 2: @@ -4066,9 +4073,6 @@ I32 len; } else if (strEQ(d,"quotemeta")) return -KEY_quotemeta; break; - case 'R': - if (strEQ(d,"RESTART")) return KEY_RESTART; - break; case 'r': switch (len) { case 3: @@ -5225,16 +5229,21 @@ U32 flags; CvFLAGS(compcv) |= flags; comppad = newAV(); + av_push(comppad, Nullsv); + curpad = AvARRAY(comppad); comppad_name = newAV(); comppad_name_fill = 0; -#ifdef USE_THREADS - av_store(comppad_name, 0, newSVpv("@_", 2)); -#endif /* USE_THREADS */ min_intro_pending = 0; - av_push(comppad, Nullsv); - curpad = AvARRAY(comppad); padix = 0; subline = curcop->cop_line; +#ifdef USE_THREADS + av_store(comppad_name, 0, newSVpv("@_", 2)); + curpad[0] = (SV*)newAV(); + SvPADMY_on(curpad[0]); /* XXX Needed? */ + CvOWNER(compcv) = 0; + New(666, CvMUTEXP(compcv), 1, perl_mutex); + MUTEX_INIT(CvMUTEXP(compcv)); +#endif /* USE_THREADS */ comppadlist = newAV(); AvREAL_off(comppadlist); @@ -5245,10 +5254,8 @@ U32 flags; CvOUTSIDE(compcv) = (CV*)SvREFCNT_inc((SV*)outsidecv); #ifdef USE_THREADS CvOWNER(compcv) = 0; - New(666, CvMUTEXP(compcv), 1, pthread_mutex_t); + New(666, CvMUTEXP(compcv), 1, perl_mutex); MUTEX_INIT(CvMUTEXP(compcv)); - New(666, CvCONDP(compcv), 1, pthread_cond_t); - COND_INIT(CvCONDP(compcv)); #endif /* USE_THREADS */ return oldsavestack_ix;