stage2 修复全局变量未完成的问题 提供错误处理解析
This commit is contained in:
1 parent
c0a86ea552
commit
0b8f649818
11 files changed
+317
-18
No files matched your search
@@ -314,6 +314,26 @@ fn add_data(self: *Prog, ptr: usize, size: usize): usize {
|
||||
ret self.gdata.len - 1;
|
||||
}
|
||||
|
||||
// 追加一条 size 字节的零初始化全局数据(BSS 语义);返回其索引。
|
||||
fn add_zero_data(self: *Prog, size: usize): usize {
|
||||
var entry = ByteBuffer.new();
|
||||
match ByteBuffer.reserve(&entry, size) {
|
||||
.Ok => {},
|
||||
.Err(error) => { ByteBuffer.drop(&entry); ret 0; },
|
||||
}
|
||||
if size != 0 {
|
||||
entry.storage.len = size;
|
||||
var p = entry.storage.data as *u8;
|
||||
var i: usize = 0;
|
||||
while i < size { p[i] = 0; i = i + 1; }
|
||||
}
|
||||
match Vec.push(&self.gdata, &entry as *u8) {
|
||||
.Ok => {},
|
||||
.Err(error) => { ByteBuffer.drop(&entry); ret 0; },
|
||||
}
|
||||
ret self.gdata.len - 1;
|
||||
}
|
||||
|
||||
// 返回 name 对应的 native 索引;不存在则登记。name 为空指针时返回 -1。
|
||||
fn get_or_add_native(self: *Prog, name: ByteView): isize {
|
||||
if name.ptr == null { ret -1; }
|
||||
|
||||
Reference in new issue
Block a user