wcc/cgen: localfind inline name-loop -> strings.compare (Wave-2 hand-rolled->lib)
The open-coded len-guard + byte-by-byte equality loop in localfind is exactly strings.compare(ln, name) == 0 (==0 demands equal length AND equal bytes; no prefix false-match). Matches cstage cgen.c:1669 strcmp(l->name, name) == 0. The @-fallback streq + localfindnode streq calls are shared-helper calls, left for the wholesale swap (#17). Regenerated w6c + wwdump combined.ww (the only amalgamations embedding cgen.ww's localfind).
This commit is contained in:
@@ -31695,6 +31695,7 @@ import tok;
|
|||||||
import typ;
|
import typ;
|
||||||
import sym;
|
import sym;
|
||||||
import strconv;
|
import strconv;
|
||||||
|
import strings;
|
||||||
import io;
|
import io;
|
||||||
import memio;
|
import memio;
|
||||||
// Split files. Bundler pulls these in transitively so consumers only
|
// Split files. Bundler pulls these in transitively so consumers only
|
||||||
@@ -32337,15 +32338,7 @@ fn localfind(c: *cgen, name: str) i32 = {
|
|||||||
let l: *local = c.locals;
|
let l: *local = c.locals;
|
||||||
for (l != nil) {
|
for (l != nil) {
|
||||||
let ln: str = l.name;
|
let ln: str = l.name;
|
||||||
if (ln.len == name.len) {
|
if (strings.compare(ln, name) == 0) { return l.off; };
|
||||||
let i: i32 = 0;
|
|
||||||
let eq: bool = true;
|
|
||||||
for (i < name.len) {
|
|
||||||
if (ln[i] != name[i]) { eq = false; i = name.len; }
|
|
||||||
else { i += 1; };
|
|
||||||
};
|
|
||||||
if (eq) { return l.off; };
|
|
||||||
};
|
|
||||||
l = l.lnext;
|
l = l.lnext;
|
||||||
};
|
};
|
||||||
if (name.len > 0) {
|
if (name.len > 0) {
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import tok;
|
|||||||
import typ;
|
import typ;
|
||||||
import sym;
|
import sym;
|
||||||
import strconv;
|
import strconv;
|
||||||
|
import strings;
|
||||||
import io;
|
import io;
|
||||||
import memio;
|
import memio;
|
||||||
// Split files. Bundler pulls these in transitively so consumers only
|
// Split files. Bundler pulls these in transitively so consumers only
|
||||||
@@ -672,15 +673,7 @@ fn localfind(c: *cgen, name: str) i32 = {
|
|||||||
let l: *local = c.locals;
|
let l: *local = c.locals;
|
||||||
for (l != nil) {
|
for (l != nil) {
|
||||||
let ln: str = l.name;
|
let ln: str = l.name;
|
||||||
if (ln.len == name.len) {
|
if (strings.compare(ln, name) == 0) { return l.off; };
|
||||||
let i: i32 = 0;
|
|
||||||
let eq: bool = true;
|
|
||||||
for (i < name.len) {
|
|
||||||
if (ln[i] != name[i]) { eq = false; i = name.len; }
|
|
||||||
else { i += 1; };
|
|
||||||
};
|
|
||||||
if (eq) { return l.off; };
|
|
||||||
};
|
|
||||||
l = l.lnext;
|
l = l.lnext;
|
||||||
};
|
};
|
||||||
if (name.len > 0) {
|
if (name.len > 0) {
|
||||||
|
|||||||
@@ -31695,6 +31695,7 @@ import tok;
|
|||||||
import typ;
|
import typ;
|
||||||
import sym;
|
import sym;
|
||||||
import strconv;
|
import strconv;
|
||||||
|
import strings;
|
||||||
import io;
|
import io;
|
||||||
import memio;
|
import memio;
|
||||||
// Split files. Bundler pulls these in transitively so consumers only
|
// Split files. Bundler pulls these in transitively so consumers only
|
||||||
@@ -32337,15 +32338,7 @@ fn localfind(c: *cgen, name: str) i32 = {
|
|||||||
let l: *local = c.locals;
|
let l: *local = c.locals;
|
||||||
for (l != nil) {
|
for (l != nil) {
|
||||||
let ln: str = l.name;
|
let ln: str = l.name;
|
||||||
if (ln.len == name.len) {
|
if (strings.compare(ln, name) == 0) { return l.off; };
|
||||||
let i: i32 = 0;
|
|
||||||
let eq: bool = true;
|
|
||||||
for (i < name.len) {
|
|
||||||
if (ln[i] != name[i]) { eq = false; i = name.len; }
|
|
||||||
else { i += 1; };
|
|
||||||
};
|
|
||||||
if (eq) { return l.off; };
|
|
||||||
};
|
|
||||||
l = l.lnext;
|
l = l.lnext;
|
||||||
};
|
};
|
||||||
if (name.len > 0) {
|
if (name.len > 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user