ir
This commit is contained in:
@@ -318,6 +318,20 @@ pub const Interpreter = struct {
|
||||
.cmp_le => |b| return .{ .value = .{ .boolean = try self.evalCmp(frame, b, .le) } },
|
||||
.cmp_gt => |b| return .{ .value = .{ .boolean = try self.evalCmp(frame, b, .gt) } },
|
||||
.cmp_ge => |b| return .{ .value = .{ .boolean = try self.evalCmp(frame, b, .ge) } },
|
||||
.str_eq => |b| {
|
||||
const lhs = frame.getRef(b.lhs);
|
||||
const rhs = frame.getRef(b.rhs);
|
||||
const ls = if (lhs == .string) lhs.string else "";
|
||||
const rs = if (rhs == .string) rhs.string else "";
|
||||
return .{ .value = .{ .boolean = std.mem.eql(u8, ls, rs) } };
|
||||
},
|
||||
.str_ne => |b| {
|
||||
const lhs = frame.getRef(b.lhs);
|
||||
const rhs = frame.getRef(b.rhs);
|
||||
const ls = if (lhs == .string) lhs.string else "";
|
||||
const rs = if (rhs == .string) rhs.string else "";
|
||||
return .{ .value = .{ .boolean = !std.mem.eql(u8, ls, rs) } };
|
||||
},
|
||||
|
||||
// ── Logical ─────────────────────────────────────────
|
||||
.bool_and => |b| {
|
||||
@@ -824,6 +838,9 @@ pub const Interpreter = struct {
|
||||
const val = try self.getGlobal(gid);
|
||||
return .{ .value = val };
|
||||
},
|
||||
.func_ref => |fid| {
|
||||
return .{ .value = .{ .func_ref = fid } };
|
||||
},
|
||||
.global_set => |gs| {
|
||||
const val = frame.getRef(gs.value);
|
||||
self.global_values.put(gs.global.index(), val) catch {};
|
||||
|
||||
Reference in New Issue
Block a user