# HG changeset patch # User Doug Simon # Date 1431518576 -7200 # Node ID 735f8d7311155c9dc6685681dee9d5ba6663fd2d # Parent 27cd1491237f986c99fc24e6145b8fe457b35669 converted @MethodSubstitutions for CRC32 to MethodSubstitutionPlugins diff -r 27cd1491237f -r 735f8d731115 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java Wed May 13 13:25:08 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java Wed May 13 14:02:56 2015 +0200 @@ -27,7 +27,6 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.api.replacements.*; -import com.oracle.graal.hotspot.replacements.*; import com.oracle.graal.hotspot.word.*; import com.oracle.graal.phases.util.*; import com.oracle.graal.replacements.*; @@ -63,10 +62,6 @@ return null; } } - } else if (substituteClass == CRC32Substitutions.class) { - if (!config.useCRC32Intrinsics) { - return null; - } } return super.registerMethodSubstitution(cr, originalMethod, substituteMethod); } diff -r 27cd1491237f -r 735f8d731115 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java Wed May 13 13:25:08 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java Wed May 13 14:02:56 2015 +0200 @@ -26,6 +26,7 @@ import static com.oracle.graal.hotspot.replacements.SystemSubstitutions.*; import java.lang.invoke.*; +import java.util.zip.*; import sun.reflect.*; @@ -86,6 +87,7 @@ registerReflectionPlugins(invocationPlugins); registerStableOptionPlugins(invocationPlugins); registerAESPlugins(invocationPlugins, config); + registerCRC32Plugins(invocationPlugins, config); StandardGraphBuilderPlugins.registerInvocationPlugins(metaAccess, invocationPlugins, !config.useHeapProfiler); return plugins; @@ -248,4 +250,17 @@ } } } + + private static void registerCRC32Plugins(InvocationPlugins plugins, HotSpotVMConfig config) { + if (config.useCRC32Intrinsics) { + assert config.aescryptEncryptBlockStub != 0L; + assert config.aescryptDecryptBlockStub != 0L; + assert config.cipherBlockChainingEncryptAESCryptStub != 0L; + assert config.cipherBlockChainingDecryptAESCryptStub != 0L; + Registration r = new Registration(plugins, CRC32.class); + r.registerMethodSubstitution(CRC32Substitutions.class, "update", int.class, int.class); + r.registerMethodSubstitution(CRC32Substitutions.class, "updateBytes", int.class, byte[].class, int.class, int.class); + r.registerMethodSubstitution(CRC32Substitutions.class, "updateByteBuffer", int.class, long.class, int.class, int.class); + } + } } diff -r 27cd1491237f -r 735f8d731115 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java Wed May 13 13:25:08 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java Wed May 13 14:02:56 2015 +0200 @@ -31,7 +31,6 @@ import com.oracle.graal.api.replacements.*; import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; -import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.nodes.*; import com.oracle.graal.nodes.extended.*; import com.oracle.graal.word.*; @@ -39,25 +38,8 @@ /** * Substitutions for {@link CRC32}. */ -@ClassSubstitution(value = CRC32.class, defaultGuard = CRC32Substitutions.Guard.class) public class CRC32Substitutions { - public static class Guard implements SubstitutionGuard { - - @SuppressWarnings("unused") private HotSpotVMConfig config; - - public Guard(HotSpotVMConfig config) { - this.config = config; - } - - public boolean execute() { - /* - * Disabled until MethodSubstitutions are compiled like snipppets. - */ - return false; // return config.useCRC32Intrinsics; - } - } - /** * Gets the address of {@code StubRoutines::x86::_crc_table} in {@code stubRoutines_x86.hpp}. */ @@ -66,7 +48,6 @@ return runtime().getConfig().crcTableAddress; } - @MethodSubstitution(isStatic = true) static int update(int crc, int b) { int c = ~crc; int index = (b ^ c) & 0xFF; @@ -76,13 +57,11 @@ return ~result; } - @MethodSubstitution(isStatic = true) static int updateBytes(int crc, byte[] buf, int off, int len) { Word bufAddr = Word.unsigned(GetObjectAddressNode.get(buf) + arrayBaseOffset(Kind.Byte) + off); return updateBytes(UPDATE_BYTES_CRC32, crc, bufAddr, len); } - @MethodSubstitution(isStatic = true, optional = true) static int updateByteBuffer(int crc, long addr, int off, int len) { Word bufAddr = Word.unsigned(addr).add(off); return updateBytes(UPDATE_BYTES_CRC32, crc, bufAddr, len); diff -r 27cd1491237f -r 735f8d731115 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSubstitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSubstitutions.java Wed May 13 13:25:08 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSubstitutions.java Wed May 13 14:02:56 2015 +0200 @@ -22,8 +22,6 @@ */ package com.oracle.graal.hotspot.replacements; -import java.util.zip.*; - import sun.misc.*; import sun.reflect.*; @@ -43,7 +41,6 @@ replacements.registerSubstitutions(System.class, SystemSubstitutions.class); replacements.registerSubstitutions(Thread.class, ThreadSubstitutions.class); replacements.registerSubstitutions(Unsafe.class, UnsafeSubstitutions.class); - replacements.registerSubstitutions(CRC32.class, CRC32Substitutions.class); replacements.registerSubstitutions(Reflection.class, ReflectionSubstitutions.class); replacements.registerSubstitutions(CompilerToVMImpl.class, CompilerToVMImplSubstitutions.class); }