27、多态类型与数据流分析

多态类型与数据流分析助力编译器优化

多态类型与数据流分析

多态类型

编译器能够构建类型的运行时描述,这与特定的数据结构并无太大差异。基本类型可以静态地绑定到特定标签,例如 L_int_type 。以 randomzap<a>(x:a) 函数为例,它实际上可以被翻译为如下形式:

function randomzap(a:type,x:a) : a =
  let function f(y:a) : a =
    let var s = sizeof(a)
    in if random()
      then
        copy s bytes from y to result
      else
        copy s bytes from x to result
    end
  in f
end

类型描述 a 是内部函数 f 的自由变量,必须使用闭包来处理。在 f then 子句中,将类型为 a 的值从其参数 y 移动到返回值寄存器的代码,必须检查 a 以确定要移动多少个字,以及从哪种类型的寄存器中移动。

类型传递具有一些有趣的特性。类型描述还可以用于垃圾回收器接口。由于每个函数都知道其所有变量的类型,多态函数也知道哪些变量描述了其他变量的类型,因此数据不需要使用装箱来描述自身。类型传递还使得引入类型选择

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值