stage2 修复大量AI生成的风格问题 stage1 修复对于vm abi的错误生成
This commit is contained in:
1 parent
0e38858785
commit
76f980654c
40 files changed
+619
-938
No files matched your search
@@ -1,10 +1,7 @@
|
||||
// Expect retcode = 0
|
||||
|
||||
// 全量热点/耗时记录器(配合 @file_name()/@line()/@col() 与 sys/time.spl)。
|
||||
// 每个调用点聚合:count、独占(self)与包含(total)的 steps/ns。
|
||||
// - total_* 含被调用者(嵌套会重复,跨站点求和会超过墙钟)
|
||||
// - self_* = total_* - 子区间之和,用于定位真正的热点
|
||||
// 用法(严格 LIFO,defer 正好满足):
|
||||
// 采样热点记录器:每个调用点聚合 count 与 self/total 的 steps/ns(self = total 减子区间)。
|
||||
// 严格 LIFO,用 defer 配对:
|
||||
// var tok = Profile.begin(&prof, @file_name(), @line(), @col());
|
||||
// defer { Profile.end(&prof, tok); }
|
||||
|
||||
@@ -139,7 +136,7 @@ fn begin(self: *Profile, fname: []u8, line: usize, col: usize): usize {
|
||||
.Err(error) => { ret 0; },
|
||||
}
|
||||
var token = self.spans.len - 1;
|
||||
match Vec.push(&self.stack, &token as *u8) { .Ok => {}, .Err(error) => {} }
|
||||
Vec.push(&self.stack, &token as *u8);
|
||||
ret token;
|
||||
}
|
||||
|
||||
@@ -164,7 +161,7 @@ fn end(self: *Profile, token: usize) {
|
||||
|
||||
// 弹栈并把区间计入父 span(LIFO)。
|
||||
var popped: usize = 0;
|
||||
match Vec.pop(&self.stack, &popped as *u8) { .Ok => {}, .Err(error) => {} }
|
||||
Vec.pop(&self.stack, &popped as *u8);
|
||||
var n = self.stack.len;
|
||||
if n > 0 {
|
||||
var p = span_at(self, usize_at(&self.stack, n - 1));
|
||||
@@ -175,7 +172,6 @@ fn end(self: *Profile, token: usize) {
|
||||
}
|
||||
}
|
||||
|
||||
// ---- dump / save ----
|
||||
|
||||
fn out_s(out: *ByteBuffer, s: []u8): bool {
|
||||
match ByteBuffer.append(out, s) { .Ok => { ret true; }, .Err(error) => { ret false; } }
|
||||
@@ -202,7 +198,7 @@ fn dump(self: *Profile, out: *ByteBuffer): bool {
|
||||
defer { Vec.drop(&idx); }
|
||||
var i: usize = 0;
|
||||
while i < self.sites.len {
|
||||
match Vec.push(&idx, &i as *u8) { .Ok => {}, .Err(error) => {} }
|
||||
Vec.push(&idx, &i as *u8);
|
||||
i = i + 1;
|
||||
}
|
||||
|
||||
@@ -271,7 +267,6 @@ fn save(self: *Profile, path: ByteView): bool {
|
||||
ret true;
|
||||
}
|
||||
|
||||
// ---- 测试 ----
|
||||
|
||||
fn spin(n: usize): usize {
|
||||
var i: usize = 0;
|
||||
@@ -293,10 +288,9 @@ fn test_profile() {
|
||||
@assert(s != null && s.count >= 1, "count");
|
||||
@assert(s.total_steps > 0, "steps");
|
||||
@assert(s.self_steps > 0, "self steps");
|
||||
if v == 0 { ignore_usize(v + 1); }
|
||||
if v == 0 { v + 1; }
|
||||
}
|
||||
|
||||
fn ignore_usize(v: usize) {}
|
||||
|
||||
fn main() {
|
||||
test_profile();
|
||||
|
||||
Reference in new issue
Block a user