166 r.registerMethodSubstitution(AArch64StringUTF16Substitutions.class, "compareToLatin1", byte[].class, byte[].class); |
166 r.registerMethodSubstitution(AArch64StringUTF16Substitutions.class, "compareToLatin1", byte[].class, byte[].class); |
167 } |
167 } |
168 } |
168 } |
169 |
169 |
170 private static void registerUnsafePlugins(InvocationPlugins plugins, BytecodeProvider replacementsBytecodeProvider) { |
170 private static void registerUnsafePlugins(InvocationPlugins plugins, BytecodeProvider replacementsBytecodeProvider) { |
171 Registration r; |
171 registerUnsafePlugins(new Registration(plugins, Unsafe.class), new JavaKind[]{JavaKind.Int, JavaKind.Long, JavaKind.Object}); |
172 JavaKind[] unsafeJavaKinds; |
172 if (!Java8OrEarlier) { |
173 if (Java8OrEarlier) { |
173 registerUnsafePlugins(new Registration(plugins, "jdk.internal.misc.Unsafe", replacementsBytecodeProvider), new JavaKind[]{JavaKind.Int, JavaKind.Long, JavaKind.Object}); |
174 r = new Registration(plugins, Unsafe.class); |
174 } |
175 unsafeJavaKinds = new JavaKind[]{JavaKind.Int, JavaKind.Long, JavaKind.Object}; |
175 } |
176 } else { |
176 |
177 r = new Registration(plugins, "jdk.internal.misc.Unsafe", replacementsBytecodeProvider); |
177 private static void registerUnsafePlugins(Registration r, JavaKind[] unsafeJavaKinds) { |
178 unsafeJavaKinds = new JavaKind[]{JavaKind.Int, JavaKind.Long, JavaKind.Object}; |
|
179 } |
|
180 |
178 |
181 for (JavaKind kind : unsafeJavaKinds) { |
179 for (JavaKind kind : unsafeJavaKinds) { |
182 Class<?> javaClass = kind == JavaKind.Object ? Object.class : kind.toJavaClass(); |
180 Class<?> javaClass = kind == JavaKind.Object ? Object.class : kind.toJavaClass(); |
183 String kindName = (kind == JavaKind.Object && !Java11OrEarlier) ? "Reference" : kind.name(); |
181 String kindName = (kind == JavaKind.Object && !Java11OrEarlier) ? "Reference" : kind.name(); |
184 r.register4("getAndSet" + kindName, Receiver.class, Object.class, long.class, javaClass, new InvocationPlugin() { |
182 r.register4("getAndSet" + kindName, Receiver.class, Object.class, long.class, javaClass, new InvocationPlugin() { |