JEP draft: Remove Shark compiler

OwnerRoman Kennke
Created2017/10/11 14:20
Updated2017/10/16 00:27
TypeFeature
StatusSubmitted
Componenthotspot / compiler
ScopeImplementation
Discussionzero dash dev
EffortS
DurationS
Priority4
Reviewed byDavid Holmes, Vladimir Kozlov
Issue8189173

Summary

Remove Shark JIT compiler (aka LLVM based JIT).

Goals

The goal of this JEP is to remove all of Shark's code in src/hotspot/share/shark, related build machinery and some occasional references to it all over the place.

Non-Goals

It is not a goal of this JEP to remove the Zero interpreter (which is the basis for Shark).

Success Metrics

JEP is successful if src/hotspot/share/shark is gone, no Shark build machinery remains under make/ and no remaining code has any referenes to Shark or LLVM left.

Motivation

The Shark code has not been updated for a long time. It requires specific old (3.x) versions of LLVM to compile. It looks like a fairly major effort to bring it up to date with recent LLVM versions (current 5.0). The last time it has been touched it was difficult to keep up with LLVM, the LLVM JIT API would change with every release. Furthermore, Shark has very considerable performance problems, in particular its interface with the GC is very slow. All of the platforms that Shark was originally meant to provide support for now have native C2 backends (x86, arm, ppc).

Description

As stated above, remove all of src/hotspot/share/shark and related references and build machinery.

Alternatives

An alternative would be to bring Shark up to date with recent LLVM, rewrite the Shark's interface to plug into current LLVM GC interface, and hopefully commit to maintain the result. I don't have the resources or motivation to do that though.

Testing

No existing jtreg tests must get broken. Any tests that possibly reference Shark (if any) needs to be removed or changed to not reference Shark.

Risks and Assumptions

Dependencies