mirror of
https://github.com/netwide-assembler/nasm
synced 2026-08-26 16:23:04 -04:00
pptok.c: quick-and-dirty downcasing during prehashing
Speed up pptok.c by just doing |= 0x20 instead of calling tolower() for every character during prehashing. This is good enough for our needs, since we don't have any tokens containing the characters @ [ \ ] _ nor any high-bit characters (in which case we'd have to worry about multibyte anyway.)
This commit is contained in:
parent
ff6e9b4699
commit
7978feebd2
1 changed files with 7 additions and 1 deletions
8
pptok.pl
8
pptok.pl
|
|
@ -115,6 +115,12 @@ if ($what eq 'c') {
|
|||
foreach $pt (@pptok) {
|
||||
if (defined($pt)) {
|
||||
$tokens{'%'.$pt} = $n;
|
||||
if ($pt =~ /[\@\[\]\\_]/) {
|
||||
# Fail on characters which look like upper-case letters
|
||||
# to the quick-and-dirty downcasing in the prehash
|
||||
# (see below)
|
||||
die "$in: invalid character in token: $pt";
|
||||
}
|
||||
}
|
||||
$n++;
|
||||
}
|
||||
|
|
@ -183,7 +189,7 @@ if ($what eq 'c') {
|
|||
print OUT "\n";
|
||||
|
||||
print OUT " while ((c = *p++) != 0) {\n";
|
||||
print OUT " c = tolower(c);\n";
|
||||
print OUT " c |= 0x20; /* convert to lower case */\n";
|
||||
printf OUT " uint32_t kn1 = rot(k1,%2d) - rot(k2,%2d) + c;\n", ${$sv}[0], ${$sv}[1];
|
||||
printf OUT " uint32_t kn2 = rot(k2,%2d) - rot(k1,%2d) + c;\n", ${$sv}[2], ${$sv}[3];
|
||||
print OUT " k1 = kn1; k2 = kn2;\n";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue