Code Review for tempDef-hs-comp

Prepared by:goetz on Mon Sep 22 15:08:24 CEST 2014
Workspace:/net/usr.work/d045726/oJ/tempDef-hs-comp
Compare against: http://hg.openjdk.java.net/jdk9/hs-comp/hotspot
Compare against version:7059
Summary of changes: 45 lines changed: 9 ins; 1 del; 35 mod; 10894 unchg
Changeset: tempDef-hs-comp.changeset
Author comments:

8058880: Introduce identifier TEMP_DEF for effects in adl.

This effect is similar to USE_DEF, except that a TEMP node will be generated that represents the USE.

With this effect one can express that the def'ed register must be different from the used ones corresponding to ins. Currently this is already possible by specifying effect TEMP for the operand with effect DEF from the match rule.

Introducing this new identifyer makes the code more readable and allows to specify the effect for nodes without match rules.

An example is an optimized encode node, if the base of the compressed heap is 35G aligned, i.e., the shifted narrow oop can be merged with the base by an or instruction.

On PPC we can shift and or with a single instruction, so we can implement Decode with these instructions:

mov Rdst = Rbase
rldimi Rdst = Rdst || (Rsrc << 3)

As the move is off the critical path, this is superior to do a shift and an add. Unfortunately we must guarantee that Rdst != Rsrc. which we do with a TEMP_DEF effect:

instruct decodeN(iRegPdst dst, iRegNsrc src) %{
    match(Set dst (DecodeN src));
    effect(TEMP_DEF dst);

Legend: Modified file
Deleted file
New file

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New ----- Raw src/share/vm/adlc/archDesc.cpp

rev 7060 : 8058880: Introduce identifier TEMP_DEF for effects in adl.
18 lines changed: 3 ins; 1 del; 14 mod; 1175 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New ----- Raw src/share/vm/adlc/formssel.cpp

rev 7060 : 8058880: Introduce identifier TEMP_DEF for effects in adl.
11 lines changed: 2 ins; 0 del; 9 mod; 4244 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New ----- Raw src/share/vm/adlc/formssel.hpp

rev 7060 : 8058880: Introduce identifier TEMP_DEF for effects in adl.
9 lines changed: 3 ins; 0 del; 6 mod; 1086 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New ----- Raw src/share/vm/adlc/output_c.cpp

rev 7060 : 8058880: Introduce identifier TEMP_DEF for effects in adl.
7 lines changed: 1 ins; 0 del; 6 mod; 4389 unchg

This code review page was prepared using /sapmnt/home1/d045726/bin/webrev.ksh (vers 24.0-hg+jbs).