首页> 外文会议>Joint ACM-ISCOPE conference on Java Grande >Elimination of Java array bounds checks in the presence of indirection
【24h】

Elimination of Java array bounds checks in the presence of indirection

机译:在存在间接性的情况下消除Java数组边界检查

获取原文

摘要

The Java language specification states that every access to an array needs to be within the bounds of that array; i.e. between 0 and array length 1. Different techniques for different programming languages have been proposed to eliminate explicit bounds checks. Some of these techniques are implemented in off-the-shelf Java Virtual Machines (JVMs). The underlying principle of these techniques is that bounds checks can be removed when a JVM/compiler has enough information to guarantee that a sequence of accesses (e.g. inside a for-loop) is safe (within the bounds). Most of the techniques for the elimination of array bounds checks have been developed for programming languages that do not support multi-threading and/or enable dynamic class loading. These two characteristics make most of these tech niques unsuitable for Java. Techniques developed specifically for Java have not addressed the elimination of array bounds checks in the presence of indirection, that is, when the index is stored in another array (indirection array). With the objective of optimising applications with array indirection, this paper proposes and evaluates three implementation strategies, each implemented as a Java class. The classes provide the functionality of Java arrays of type int so that objects of the classes can be used instead of indirection arrays. Each strategy enables JVMs, when examining only one of these classes at a time, to obtain enough information to remove array bounds checks.
机译:Java语言规范指出,对数组的每次访问都必须在该数组的范围之内。即,在0到数组长度1之间。已经提出了针对不同编程语言的不同技术,以消除显式的边界检查。其中一些技术是在现成的Java虚拟机(JVM)中实现的。这些技术的基本原理是,当JVM /编译器具有足够的信息以确保一系列访问(例如,在for循环内)是安全的(在范围之内)时,可以取消范围检查。大多数消除数组边界检查的技术都是针对不支持多线程和/或不支持动态类加载的编程语言开发的。这两个特征使这些技术中的大多数不适用于Java。专为Java开发的技术尚未解决在存在间接存在的情况下消除数组边界检查的问题,也就是说,当索引存储在另一个数组(间接数组)中时。为了通过数组间接优化应用程序,本文提出并评估了三种实现策略,每种策略均以Java类的形式实现。这些类提供了int类型的Java数组的功能,因此可以使用这些类的对象代替间接数组。当一次仅检查这些类之一时,每种策略使JVM都能获得足够的信息来删除数组边界检查。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号