w6a: replace private streq with strings.compare (Wave-2 hand-rolled->lib)

This commit is contained in:
2026-06-03 03:33:09 +09:00
parent af87ff4f31
commit 05609dcc34
3 changed files with 8 additions and 30 deletions

View File

@@ -15,6 +15,7 @@ import os;
import rt; import rt;
import mem; import mem;
import opcodes; import opcodes;
import strings;
// ---- text buffer growth ------------------------------------------------ // ---- text buffer growth ------------------------------------------------
@@ -212,20 +213,10 @@ fn sserrw(a: *asm_, prefix: u8, op2: u8, regop: i32, rmop: i32) void = {
// ---- label resolution / fixups ---------------------------------------- // ---- label resolution / fixups ----------------------------------------
fn streq(a: str, b: str) bool = {
if (a.len != b.len) { return false; };
let i: i32 = 0;
for (i < a.len) {
if (a[i] != b[i]) { return false; };
i += 1;
};
return true;
};
fn resolvelabel(a: *asm_, name: str) u64 = { fn resolvelabel(a: *asm_, name: str) u64 = {
let s: *asym = a.syms; let s: *asym = a.syms;
for (s != nil) { for (s != nil) {
if (s.defined != 0) { if (streq(s.name, name)) { return s.addr; }; }; if (s.defined != 0) { if (strings.compare(s.name, name) == 0) { return s.addr; }; };
s = s.snext; s = s.snext;
}; };
return 0u64; return 0u64;
@@ -234,7 +225,7 @@ fn resolvelabel(a: *asm_, name: str) u64 = {
fn labeldefined(a: *asm_, name: str) bool = { fn labeldefined(a: *asm_, name: str) bool = {
let s: *asym = a.syms; let s: *asym = a.syms;
for (s != nil) { for (s != nil) {
if (s.defined != 0) { if (streq(s.name, name)) { return true; }; }; if (s.defined != 0) { if (strings.compare(s.name, name) == 0) { return true; }; };
s = s.snext; s = s.snext;
}; };
return false; return false;

View File

@@ -3285,12 +3285,10 @@ export fn init(a: *asm_, file: str, src: *u8, len: u64) void = {
a.errs = 0; a.errs = 0;
}; };
// `streq(str,str)` lives in asm.ww — same bundle, single definition.
export fn intern(a: *asm_, name: str) *asym = { export fn intern(a: *asm_, name: str) *asym = {
let s: *asym = a.syms; let s: *asym = a.syms;
for (s != nil) { for (s != nil) {
if (streq(s.name, name)) { return s; }; if (strings.compare(s.name, name) == 0) { return s; };
s = s.snext; s = s.snext;
}; };
let n: *asym = alloc(asym { name = name, snext = a.syms })!; let n: *asym = alloc(asym { name = name, snext = a.syms })!;
@@ -3736,6 +3734,7 @@ import os;
import rt; import rt;
import mem; import mem;
import opcodes; import opcodes;
import strings;
// ---- text buffer growth ------------------------------------------------ // ---- text buffer growth ------------------------------------------------
@@ -3933,20 +3932,10 @@ fn sserrw(a: *asm_, prefix: u8, op2: u8, regop: i32, rmop: i32) void = {
// ---- label resolution / fixups ---------------------------------------- // ---- label resolution / fixups ----------------------------------------
fn streq(a: str, b: str) bool = {
if (a.len != b.len) { return false; };
let i: i32 = 0;
for (i < a.len) {
if (a[i] != b[i]) { return false; };
i += 1;
};
return true;
};
fn resolvelabel(a: *asm_, name: str) u64 = { fn resolvelabel(a: *asm_, name: str) u64 = {
let s: *asym = a.syms; let s: *asym = a.syms;
for (s != nil) { for (s != nil) {
if (s.defined != 0) { if (streq(s.name, name)) { return s.addr; }; }; if (s.defined != 0) { if (strings.compare(s.name, name) == 0) { return s.addr; }; };
s = s.snext; s = s.snext;
}; };
return 0u64; return 0u64;
@@ -3955,7 +3944,7 @@ fn resolvelabel(a: *asm_, name: str) u64 = {
fn labeldefined(a: *asm_, name: str) bool = { fn labeldefined(a: *asm_, name: str) bool = {
let s: *asym = a.syms; let s: *asym = a.syms;
for (s != nil) { for (s != nil) {
if (s.defined != 0) { if (streq(s.name, name)) { return true; }; }; if (s.defined != 0) { if (strings.compare(s.name, name) == 0) { return true; }; };
s = s.snext; s = s.snext;
}; };
return false; return false;

View File

@@ -156,12 +156,10 @@ export fn init(a: *asm_, file: str, src: *u8, len: u64) void = {
a.errs = 0; a.errs = 0;
}; };
// `streq(str,str)` lives in asm.ww — same bundle, single definition.
export fn intern(a: *asm_, name: str) *asym = { export fn intern(a: *asm_, name: str) *asym = {
let s: *asym = a.syms; let s: *asym = a.syms;
for (s != nil) { for (s != nil) {
if (streq(s.name, name)) { return s; }; if (strings.compare(s.name, name) == 0) { return s; };
s = s.snext; s = s.snext;
}; };
let n: *asym = alloc(asym { name = name, snext = a.syms })!; let n: *asym = alloc(asym { name = name, snext = a.syms })!;