lib/strings,wcc,w6l: collapse nested-if to &&/|| at named sites (Wave-2 structural)
strings.bytesub two endpoint guards, wcc cgdot/cgassign 4-deep allptr/N_IDENT/localfindnode pyramids, and w6l isarchive's 8 sequential magic-byte rejects. The isarchive len<8 read-guard stays a separate statement before the || chain so the byte reads remain bounded. Not byte-id-neutral (short-circuit emits tighter branches / renumbered labels) but functionally identical; cs==ww stage-parity holds. Regenerated all embedding combined.ww.
This commit is contained in:
@@ -241,15 +241,11 @@ export fn sub(s: str, start: i32, end: i32) str = {
|
||||
export fn bytesub(s: str, start: i32, end: i32) (str | utf8.invalid) = {
|
||||
os.assert(start <= end, "strings.bytesub: start is higher than end");
|
||||
os.assert(end <= s.len, "strings.bytesub: end exceeds string length");
|
||||
if (start < s.len) {
|
||||
if ((s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (start < s.len && (s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len) {
|
||||
if ((s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len && (s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
let r: str;
|
||||
r.ptr = s.ptr + (start: u64);
|
||||
|
||||
@@ -2108,15 +2108,11 @@ export fn sub(s: str, start: i32, end: i32) str = {
|
||||
export fn bytesub(s: str, start: i32, end: i32) (str | utf8.invalid) = {
|
||||
os.assert(start <= end, "strings.bytesub: start is higher than end");
|
||||
os.assert(end <= s.len, "strings.bytesub: end exceeds string length");
|
||||
if (start < s.len) {
|
||||
if ((s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (start < s.len && (s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len) {
|
||||
if ((s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len && (s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
let r: str;
|
||||
r.ptr = s.ptr + (start: u64);
|
||||
|
||||
@@ -2108,15 +2108,11 @@ export fn sub(s: str, start: i32, end: i32) str = {
|
||||
export fn bytesub(s: str, start: i32, end: i32) (str | utf8.invalid) = {
|
||||
os.assert(start <= end, "strings.bytesub: start is higher than end");
|
||||
os.assert(end <= s.len, "strings.bytesub: end exceeds string length");
|
||||
if (start < s.len) {
|
||||
if ((s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (start < s.len && (s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len) {
|
||||
if ((s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len && (s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
let r: str;
|
||||
r.ptr = s.ptr + (start: u64);
|
||||
@@ -22666,11 +22662,10 @@ fn cgdot(c: *cgen, n: *node) void = {
|
||||
croot = croot.lhs;
|
||||
};
|
||||
let it: *tinfo = nil;
|
||||
if (allptr) { if (croot != nil) { if (croot.kind == nkind.N_IDENT) {
|
||||
if (localfindnode(c, croot.str) != nil) {
|
||||
it = lhs.type_: *tinfo;
|
||||
};
|
||||
}; }; };
|
||||
if (allptr && croot != nil && croot.kind == nkind.N_IDENT &&
|
||||
localfindnode(c, croot.str) != nil) {
|
||||
it = lhs.type_: *tinfo;
|
||||
};
|
||||
for (it != nil && it.kind == tykind.TY_NAMED) { it = it.under; };
|
||||
if (it != nil) { if (it.kind == tykind.TY_PTR) {
|
||||
let st: *tinfo = it.sub;
|
||||
@@ -26442,11 +26437,10 @@ fn cgassign(c: *cgen, n: *node) void = {
|
||||
croot = croot.lhs;
|
||||
};
|
||||
let it: *tinfo = nil;
|
||||
if (allptr) { if (croot != nil) { if (croot.kind == nkind.N_IDENT) {
|
||||
if (localfindnode(c, croot.str) != nil) {
|
||||
it = base.type_: *tinfo;
|
||||
};
|
||||
}; }; };
|
||||
if (allptr && croot != nil && croot.kind == nkind.N_IDENT &&
|
||||
localfindnode(c, croot.str) != nil) {
|
||||
it = base.type_: *tinfo;
|
||||
};
|
||||
for (it != nil && it.kind == tykind.TY_NAMED) { it = it.under; };
|
||||
if (it != nil) { if (it.kind == tykind.TY_PTR) {
|
||||
let st: *tinfo = it.sub;
|
||||
|
||||
@@ -2217,15 +2217,11 @@ export fn sub(s: str, start: i32, end: i32) str = {
|
||||
export fn bytesub(s: str, start: i32, end: i32) (str | utf8.invalid) = {
|
||||
os.assert(start <= end, "strings.bytesub: start is higher than end");
|
||||
os.assert(end <= s.len, "strings.bytesub: end exceeds string length");
|
||||
if (start < s.len) {
|
||||
if ((s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (start < s.len && (s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len) {
|
||||
if ((s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len && (s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
let r: str;
|
||||
r.ptr = s.ptr + (start: u64);
|
||||
@@ -3156,14 +3152,11 @@ type armember = struct {
|
||||
|
||||
fn isarchive(p: *u8, len: u64) bool = {
|
||||
if (len < 8u64) { return false; };
|
||||
if (p[0u64] != '!') { return false; };
|
||||
if (p[1u64] != '<') { return false; };
|
||||
if (p[2u64] != 'a') { return false; };
|
||||
if (p[3u64] != 'r') { return false; };
|
||||
if (p[4u64] != 'c') { return false; };
|
||||
if (p[5u64] != 'h') { return false; };
|
||||
if (p[6u64] != '>') { return false; };
|
||||
if (p[7u64] != '\n') { return false; };
|
||||
if (p[0u64] != '!' || p[1u64] != '<' || p[2u64] != 'a' || p[3u64] != 'r' ||
|
||||
p[4u64] != 'c' || p[5u64] != 'h' || p[6u64] != '>' ||
|
||||
p[7u64] != '\n') {
|
||||
return false;
|
||||
};
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
@@ -209,14 +209,11 @@ type armember = struct {
|
||||
|
||||
fn isarchive(p: *u8, len: u64) bool = {
|
||||
if (len < 8u64) { return false; };
|
||||
if (p[0u64] != '!') { return false; };
|
||||
if (p[1u64] != '<') { return false; };
|
||||
if (p[2u64] != 'a') { return false; };
|
||||
if (p[3u64] != 'r') { return false; };
|
||||
if (p[4u64] != 'c') { return false; };
|
||||
if (p[5u64] != 'h') { return false; };
|
||||
if (p[6u64] != '>') { return false; };
|
||||
if (p[7u64] != '\n') { return false; };
|
||||
if (p[0u64] != '!' || p[1u64] != '<' || p[2u64] != 'a' || p[3u64] != 'r' ||
|
||||
p[4u64] != 'c' || p[5u64] != 'h' || p[6u64] != '>' ||
|
||||
p[7u64] != '\n') {
|
||||
return false;
|
||||
};
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
@@ -2926,11 +2926,10 @@ fn cgdot(c: *cgen, n: *node) void = {
|
||||
croot = croot.lhs;
|
||||
};
|
||||
let it: *tinfo = nil;
|
||||
if (allptr) { if (croot != nil) { if (croot.kind == nkind.N_IDENT) {
|
||||
if (localfindnode(c, croot.str) != nil) {
|
||||
it = lhs.type_: *tinfo;
|
||||
};
|
||||
}; }; };
|
||||
if (allptr && croot != nil && croot.kind == nkind.N_IDENT &&
|
||||
localfindnode(c, croot.str) != nil) {
|
||||
it = lhs.type_: *tinfo;
|
||||
};
|
||||
for (it != nil && it.kind == tykind.TY_NAMED) { it = it.under; };
|
||||
if (it != nil) { if (it.kind == tykind.TY_PTR) {
|
||||
let st: *tinfo = it.sub;
|
||||
@@ -6702,11 +6701,10 @@ fn cgassign(c: *cgen, n: *node) void = {
|
||||
croot = croot.lhs;
|
||||
};
|
||||
let it: *tinfo = nil;
|
||||
if (allptr) { if (croot != nil) { if (croot.kind == nkind.N_IDENT) {
|
||||
if (localfindnode(c, croot.str) != nil) {
|
||||
it = base.type_: *tinfo;
|
||||
};
|
||||
}; }; };
|
||||
if (allptr && croot != nil && croot.kind == nkind.N_IDENT &&
|
||||
localfindnode(c, croot.str) != nil) {
|
||||
it = base.type_: *tinfo;
|
||||
};
|
||||
for (it != nil && it.kind == tykind.TY_NAMED) { it = it.under; };
|
||||
if (it != nil) { if (it.kind == tykind.TY_PTR) {
|
||||
let st: *tinfo = it.sub;
|
||||
|
||||
@@ -2108,15 +2108,11 @@ export fn sub(s: str, start: i32, end: i32) str = {
|
||||
export fn bytesub(s: str, start: i32, end: i32) (str | utf8.invalid) = {
|
||||
os.assert(start <= end, "strings.bytesub: start is higher than end");
|
||||
os.assert(end <= s.len, "strings.bytesub: end exceeds string length");
|
||||
if (start < s.len) {
|
||||
if ((s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (start < s.len && (s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len) {
|
||||
if ((s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len && (s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
let r: str;
|
||||
r.ptr = s.ptr + (start: u64);
|
||||
|
||||
@@ -3625,15 +3625,11 @@ export fn sub(s: str, start: i32, end: i32) str = {
|
||||
export fn bytesub(s: str, start: i32, end: i32) (str | utf8.invalid) = {
|
||||
os.assert(start <= end, "strings.bytesub: start is higher than end");
|
||||
os.assert(end <= s.len, "strings.bytesub: end exceeds string length");
|
||||
if (start < s.len) {
|
||||
if ((s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (start < s.len && (s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len) {
|
||||
if ((s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len && (s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
let r: str;
|
||||
r.ptr = s.ptr + (start: u64);
|
||||
@@ -22666,11 +22662,10 @@ fn cgdot(c: *cgen, n: *node) void = {
|
||||
croot = croot.lhs;
|
||||
};
|
||||
let it: *tinfo = nil;
|
||||
if (allptr) { if (croot != nil) { if (croot.kind == nkind.N_IDENT) {
|
||||
if (localfindnode(c, croot.str) != nil) {
|
||||
it = lhs.type_: *tinfo;
|
||||
};
|
||||
}; }; };
|
||||
if (allptr && croot != nil && croot.kind == nkind.N_IDENT &&
|
||||
localfindnode(c, croot.str) != nil) {
|
||||
it = lhs.type_: *tinfo;
|
||||
};
|
||||
for (it != nil && it.kind == tykind.TY_NAMED) { it = it.under; };
|
||||
if (it != nil) { if (it.kind == tykind.TY_PTR) {
|
||||
let st: *tinfo = it.sub;
|
||||
@@ -26442,11 +26437,10 @@ fn cgassign(c: *cgen, n: *node) void = {
|
||||
croot = croot.lhs;
|
||||
};
|
||||
let it: *tinfo = nil;
|
||||
if (allptr) { if (croot != nil) { if (croot.kind == nkind.N_IDENT) {
|
||||
if (localfindnode(c, croot.str) != nil) {
|
||||
it = base.type_: *tinfo;
|
||||
};
|
||||
}; }; };
|
||||
if (allptr && croot != nil && croot.kind == nkind.N_IDENT &&
|
||||
localfindnode(c, croot.str) != nil) {
|
||||
it = base.type_: *tinfo;
|
||||
};
|
||||
for (it != nil && it.kind == tykind.TY_NAMED) { it = it.under; };
|
||||
if (it != nil) { if (it.kind == tykind.TY_PTR) {
|
||||
let st: *tinfo = it.sub;
|
||||
|
||||
@@ -3625,15 +3625,11 @@ export fn sub(s: str, start: i32, end: i32) str = {
|
||||
export fn bytesub(s: str, start: i32, end: i32) (str | utf8.invalid) = {
|
||||
os.assert(start <= end, "strings.bytesub: start is higher than end");
|
||||
os.assert(end <= s.len, "strings.bytesub: end exceeds string length");
|
||||
if (start < s.len) {
|
||||
if ((s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (start < s.len && (s[start] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len) {
|
||||
if ((s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
if (end < s.len && (s[end] & 0xC0u8) == 0x80u8) {
|
||||
let e: utf8.invalid; return e;
|
||||
};
|
||||
let r: str;
|
||||
r.ptr = s.ptr + (start: u64);
|
||||
|
||||
Reference in New Issue
Block a user