Details
-
Enhancement
-
Resolution: Fixed
-
P4
-
15
-
b15
Description
Various inefficiencies can be spotted in the Assembler routines when instrumenting/profiling. Most prominently, emitting bytes (emit_int8) back to back generate inefficient code.
Providing methods to emit two, three and four bytes at a time. This generates significantly better code, and a significant improvement to startup time.
Proof-of-concept: http://cr.openjdk.java.net/~redestad/scratch/emit_bytes.00/
On Hello World:
-0.35-0.5M instructions (~0.45% of total)
-100-150k branches (~0.5% of total)
-0.2-0.6ms (~0.5-2% of total)
Effects are visible on bootstrap due significantly speeding up generation of the template interpreter and various runtime adapters. Small scaling improvements are visible throughout warmup since there's an accumulation of small improvements in various places like C1, C2 and adapter generation.
Providing methods to emit two, three and four bytes at a time. This generates significantly better code, and a significant improvement to startup time.
Proof-of-concept: http://cr.openjdk.java.net/~redestad/scratch/emit_bytes.00/
On Hello World:
-0.35-0.5M instructions (~0.45% of total)
-100-150k branches (~0.5% of total)
-0.2-0.6ms (~0.5-2% of total)
Effects are visible on bootstrap due significantly speeding up generation of the template interpreter and various runtime adapters. Small scaling improvements are visible throughout warmup since there's an accumulation of small improvements in various places like C1, C2 and adapter generation.
Attachments
Issue Links
- relates to
-
JDK-8241128 x86_32 build failure after JDK-8241042
- Closed
-
JDK-8241077 x86_64: Minor Assembler improvements
- Resolved