Abstract

Implementations of object-oriented programming languages associate type information with each object to perform various runtime tasks such as dynamic dispatch, type introspection, and reflection. A common means of storing such relation is by inserting a pointer to the associated type information into every object. Such an approach, however, introduces memory and performance overheads when compared with non-object-oriented languages. Recent 64-bit computer architectures have added support for tagged pointers by ignoring a number of bits - tag - of memory addresses during memory access operations and utilize them for other purposes; mainly security. This paper presents the first investigation into how this hardware support can be exploited by a Java Virtual Machine to remove type information from objects. Moreover, we propose novel hardware extensions to the address generation and load-store units to achieve low-overhead type information retrieval and tagged object pointers compression-decompression. The evaluation has been conducted after integrating the Maxine VM and the ZSim microarchitectural simulator. The results, across all the DaCapo benchmark suite, pseudo-SPECjbb2005, SLAMBench and GraphChi-PR executed to completion, show up to 26 and 10 percent geometric mean heap space savings, up to 50 and 12 percent geometric mean dynamic DRAM energy reduction, and up to 49 and 3 percent geometric mean execution time reduction with no significant performance regressions.

Highlights

  • MANAGED runtime environments are extensively used in many computing domains ranging from mobile devices to cloud servers

  • We focus on type information elimination from object headers in the context of the Java Virtual Machine (JVM) implementation and the Java language, it is important to mention that the proposed ideas are applicable to C++ and other nonmanaged and managed object-oriented languages with runtime type information associated with objects

  • Since the number of tag bits can vary on different architectures, and some of the bits can be utilized for other purposes, it is important to explore how much heap space savings can be achieved per available tag bits for Class Identifier (CID) storage

Read more

Summary

Introduction

MANAGED runtime environments are extensively used in many computing domains ranging from mobile devices to cloud servers. Implementations of managed object-oriented languages associate object type information with each object by inserting a pointer to type information into every object as part of its object header. Modern 64-bit computer architectures have added support for tagged pointers In such architectures, a number of bits - tag - of memory addresses are ignored during memory access operations and utilized for other purposes; mainly security. A number of bits - tag - of memory addresses are ignored during memory access operations and utilized for other purposes; mainly security They provide less than 64-bit addressable memory space, leaving a number of bits in object pointers for useful purposes. Aside from the CIP and the fields of the object’s class, an object reserves some extra space for special miscellaneous data (MISC) that can be associated with it during its lifetime

Methods
Results
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call