编译器实现说明

气相色谱API

本说明描述了垃圾收集接口运行时系统在版本110.15中实现。所有通信至运行时系统通过一组固定的寄存器。什么都可以额外的必须打包保存在其中一个固定的寄存器。这大大简化了运行时系统,减少了ML到C上下文切换开销,并且几乎不会增加为调用而生成的代码的大小垃圾收集。最终结果是在DEC Alpha上编译编译器的性能提高了4%。

X86-k32型

本说明描述了用于Intel x86,110.16版。标准Chaitan图着色寄存器分配不能直接用于很少使用寄存器,因为所有临时变量最终都会溢出,导致分配不当。因此,对于x86体系结构已经通过一组内存位置进行了扩展被视为寄存器。净效应是暂时性的计算到内存位置并作为参数传递给功能。以这种方式管理的这些内存位置的使用可以像使用寄存器一样快,其中寄存器是间接的分配考虑了硬件寄存器重命名机制。

性能监视器

所有性能的价值奔腾II上的计数器是使用110.17版进行测量的结果如下表所示。每个条目都以单位为单位1K次。每个计数器的含义在附录A英特尔体系结构软件开发人员手册;第3卷:系统编程指南订单编号243192。每个条目是三次运行的平均值,其中计数器测量的值通常接近零。我用过佩尔夫对于这些测量值。

表:x86-性能监视器

一种新型MLRISC寄存器分配器

本报告描述了设计和MLRISC的新寄存器分配器的实现可自定义的代码生成器。这个新的分配器与MLRISC分发的原始分配器一样,是一个链式图着色分配器使用迭代合并算法。然而,新的分配器具有不同的客户机接口,使用不同的数据结构,并集成了以下新功能和改进:

MLRISC注释

这个注释已写入模块在标准ML中被广泛使用用于在中的不同阶段之间交换信息MLRISC自定义代码生成器。不同的优化阶段可以在单个指令上附加注释,基本块、双曲线或编译单元。这些注释然后可以在随后的阶段中读取和更新。例如,注释可以用于传播从程序文本到程序集输出的注释。

本文档描述了注释机制和在MLRISC系统中使用。


匹配编译器笔记

这些注释描述了SML/NJ模式匹配编译器,最后由Bill Aitken于1992年夏天改写。早期论文作者:M.Baudinet和D.MacQueen描述了模式匹配的一般方法编译,但那篇文章中描述的启发是过时了。

X86浮点

浮点寄存器不再作为通过Sethi-Ullman编号方案,但作为一组寄存器。

`忽略虚拟帧指针的优化

在许多语言中,访问局部变量很方便和通过使用帧指针的溢出位置。框架指针可以是物理寄存器,也可以是虚拟寄存器稍后映射到堆栈指针。本说明描述了MLRISC支持和要求重写虚拟机的使用指向堆栈指针用法的帧指针--省略帧指针优化。

一种用于标准ML的高性能垃圾收集器

我们为新泽西系统标准ML(SML/NJ)。此收集器具有更高的性能、更低的延迟,并且通常需要更少的时间物理内存,而不是现有的SML/NJ收集器。此外,它能够利用大型二级缓存在现代工作站上发现。本文描述了该设计收集器,并显示比较性能数据这证明了上述性能要求。

标准ML中的异步信号

我们描述了一种机制的设计、实现和使用用于处理异步信号,如用户中断新泽西州标准ML的实施机构类型是开发真实世界的应用程序。我们的机制使用一级延续来表示执行信号发生时的状态。它已经被使用了支持并发包和用于在调试器中强制断点,以及用于处理用户在SML/NJ交互环境中进行交互。

拉尔·乔治
上次修改时间:2001年5月17日星期四16:40:03 EDT