more faster
This commit is contained in:
parent
62c27452ca
commit
655087d65b
5
build.sh
5
build.sh
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue