Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wa-lang
wa
提交
0cf5080d
wa
项目概览
wa-lang
/
wa
11 个月 前同步成功
通知
68
Star
655
Fork
45
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
wa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0cf5080d
编写于
11月 27, 2022
作者:
3
3dgen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化Array结构
上级
5589c501
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
12 addition
and
11 deletion
+12
-11
internal/backends/compiler_wat/wir/value_array.go
internal/backends/compiler_wat/wir/value_array.go
+12
-11
未找到文件。
internal/backends/compiler_wat/wir/value_array.go
浏览文件 @
0cf5080d
...
...
@@ -52,23 +52,24 @@ func (t Array) EmitLoadFromAddr(addr Value, offset int) (insts []wat.Inst) {
aArray:
**************************************/
type
aArray
struct
{
a
Value
underlying
aStruct
a
Struct
typ
Array
}
func
newValueArray
(
name
string
,
kind
ValueKind
,
base_type
ValueType
,
capacity
int
)
*
aArray
{
var
v
aArray
array_typ
:=
NewArray
(
base_type
,
capacity
)
v
.
aValue
=
aValue
{
name
:
name
,
kind
:
kind
,
typ
:
array_typ
}
v
.
underlying
=
*
newValueStruct
(
name
,
kind
,
array_typ
.
Struct
)
v
.
typ
=
NewArray
(
base_type
,
capacity
)
v
.
aStruct
=
*
newValueStruct
(
name
,
kind
,
v
.
typ
.
Struct
)
return
&
v
}
func
(
v
*
aArray
)
raw
()
[]
wat
.
Value
{
return
v
.
underlying
.
raw
()
}
func
(
v
*
aArray
)
EmitInit
()
(
insts
[]
wat
.
Inst
)
{
return
v
.
underlying
.
EmitInit
()
}
func
(
v
*
aArray
)
EmitPush
()
(
insts
[]
wat
.
Inst
)
{
return
v
.
underlying
.
EmitPush
()
}
func
(
v
*
aArray
)
EmitPop
()
(
insts
[]
wat
.
Inst
)
{
return
v
.
underlying
.
EmitPop
()
}
func
(
v
*
aArray
)
EmitRelease
()
(
insts
[]
wat
.
Inst
)
{
return
v
.
underlying
.
EmitRelease
()
}
func
(
v
*
aArray
)
Type
()
ValueType
{
return
v
.
typ
}
func
(
v
*
aArray
)
raw
()
[]
wat
.
Value
{
return
v
.
aStruct
.
raw
()
}
func
(
v
*
aArray
)
EmitInit
()
(
insts
[]
wat
.
Inst
)
{
return
v
.
aStruct
.
EmitInit
()
}
func
(
v
*
aArray
)
EmitPush
()
(
insts
[]
wat
.
Inst
)
{
return
v
.
aStruct
.
EmitPush
()
}
func
(
v
*
aArray
)
EmitPop
()
(
insts
[]
wat
.
Inst
)
{
return
v
.
aStruct
.
EmitPop
()
}
func
(
v
*
aArray
)
EmitRelease
()
(
insts
[]
wat
.
Inst
)
{
return
v
.
aStruct
.
EmitRelease
()
}
func
(
v
*
aArray
)
emitStoreToAddr
(
addr
Value
,
offset
int
)
(
insts
[]
wat
.
Inst
)
{
if
!
addr
.
Type
()
.
(
Pointer
)
.
Base
.
Equal
(
v
.
Type
())
{
...
...
@@ -76,5 +77,5 @@ func (v *aArray) emitStoreToAddr(addr Value, offset int) (insts []wat.Inst) {
return
nil
}
return
v
.
underlying
.
emitStoreToAddr
(
addr
,
offset
)
return
v
.
aStruct
.
emitStoreToAddr
(
addr
,
offset
)
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录