more faster

This commit is contained in:
Hackerpilot 2013-02-08 08:37:24 +00:00
parent 62c27452ca
commit 655087d65b
2 changed files with 27 additions and 16 deletions

View File

@ -1,4 +1,5 @@
#dmd *.d std/d/*.d -release -inline -noboundscheck -O -w -wi -m64 -property -ofdscanner -L-lsqlite3 #-inline dmd *.d std/d/*.d -release -inline -noboundscheck -O -w -wi -m64 -property -ofdscanner-dmd
#dmd *.d std/d/*.d -g -m64 -w -wi -property -ofdscanner -unittest #dmd *.d std/d/*.d -g -m64 -w -wi -property -ofdscanner -unittest
ldc2 -O2 *.d std/d/*.d -of=dscanner -release -vectorize -m64 ldc2 -O2 *.d std/d/*.d -of=dscanner-ldc -release -vectorize -m64
#ldc2 *.d std/d/*.d -of=dscanner -unittest -m64 -g #ldc2 *.d std/d/*.d -of=dscanner -unittest -m64 -g
/opt/gdc/bin/gdc -O3 -odscanner-gdc -fno-bounds-check -frelease -m64 *.d std/d/*.d

View File

@ -516,7 +516,10 @@ private:
case '/': case '/':
case '*': case '*':
case '+': case '+':
lexComment(); if (config.iterStyle & IterationStyle.includeComments)
lexComment!true();
else
lexComment!false();
return; return;
case '=': case '=':
current.type = TokenType.divEquals; current.type = TokenType.divEquals;
@ -681,7 +684,7 @@ private:
static if (keep) setTokenValue(); static if (keep) setTokenValue();
} }
void lexComment() void lexComment(bool keep)()
in in
{ {
assert (currentElement() == '/' || currentElement() == '*' || currentElement() == '+'); assert (currentElement() == '/' || currentElement() == '*' || currentElement() == '+');
@ -694,7 +697,8 @@ private:
case '/': case '/':
while (!isEoF() && !isNewline(currentElement())) while (!isEoF() && !isNewline(currentElement()))
{ {
keepNonNewlineChar(); static if (keep) keepNonNewlineChar();
else advanceRange();
} }
break; break;
case '*': case '*':
@ -702,10 +706,12 @@ private:
{ {
if (currentElement() == '*') if (currentElement() == '*')
{ {
keepNonNewlineChar(); static if (keep) keepNonNewlineChar();
else advanceRange();
if (currentElement() == '/') if (currentElement() == '/')
{ {
keepNonNewlineChar(); static if (keep) keepNonNewlineChar();
else advanceRange();
break; break;
} }
} }
@ -719,19 +725,23 @@ private:
{ {
if (currentElement() == '+') if (currentElement() == '+')
{ {
keepNonNewlineChar(); static if (keep) keepNonNewlineChar();
else advanceRange();
if (currentElement() == '/') if (currentElement() == '/')
{ {
keepNonNewlineChar(); static if (keep) keepNonNewlineChar();
else advanceRange();
--depth; --depth;
} }
} }
else if (currentElement() == '/') else if (currentElement() == '/')
{ {
keepNonNewlineChar(); static if (keep) keepNonNewlineChar();
else advanceRange();
if (currentElement() == '+') if (currentElement() == '+')
{ {
keepNonNewlineChar(); static if (keep) keepNonNewlineChar();
else advanceRange();
++depth; ++depth;
} }
} }
@ -742,7 +752,7 @@ private:
default: default:
assert(false); assert(false);
} }
if (config.iterStyle & IterationStyle.includeComments) static if (keep) keepNonNewlineChar();
setTokenValue(); setTokenValue();
} }
@ -974,6 +984,7 @@ private:
} }
else else
lexIntSuffix(); lexIntSuffix();
return;
case 'i': case 'i':
case 'L': case 'L':
if (foundDot) if (foundDot)
@ -1259,7 +1270,7 @@ private:
return; return;
case 'u': case 'u':
case 'U': case 'U':
uint digits = currentElement == 'u' ? 4 : 8; uint digits = currentElement() == 'u' ? 4 : 8;
keepChar(); keepChar();
foreach (i; 0 .. digits) foreach (i; 0 .. digits)
{ {
@ -1331,7 +1342,7 @@ private:
return; return;
case 'u': case 'u':
case 'U': case 'U':
uint digitCount = currentElement == 'u' ? 4 : 8; uint digitCount = currentElement() == 'u' ? 4 : 8;
advanceRange(); advanceRange();
ubyte[8] digits; ubyte[8] digits;
foreach (i; 0 .. digitCount) foreach (i; 0 .. digitCount)
@ -1813,8 +1824,7 @@ private:
return true; return true;
} }
else else
return c == 0x20 || c == 0x09 || c == 0x0b return c == 0x20 || (c >= 0x09 && c <= 0x0d);
|| c == 0x0c || c == 0x0a || c == 0x0d;
} }
immutable bufferSize = 1024 * 8; immutable bufferSize = 1024 * 8;