Skip to content

Commit

Permalink
Merge pull request #4030 from theresa-m/jep334_stubs
Browse files Browse the repository at this point in the history
 Stubs for Constants API (jep334)
  • Loading branch information
DanHeidinga committed Feb 14, 2019
2 parents b1cb17c + b229be5 commit b9bb3c0
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 14 deletions.
22 changes: 19 additions & 3 deletions jcl/src/java.base/share/classes/java/lang/Class.java
Expand Up @@ -50,6 +50,10 @@
import java.security.PrivilegedExceptionAction;
import java.security.PrivilegedAction;
import java.lang.ref.*;
/*[IF Java12]*/
import java.lang.constant.ClassDesc;
import java.lang.constant.Constable;
/*[ENDIF]*/

import sun.reflect.generics.repository.ClassRepository;
import sun.reflect.generics.factory.CoreReflectionFactory;
Expand Down Expand Up @@ -130,7 +134,11 @@
* @author OTI
* @version initial
*/
public final class Class<T> implements java.io.Serializable, GenericDeclaration, Type {
public final class Class<T> implements java.io.Serializable, GenericDeclaration, Type
/*[IF Java12]*/
, Constable, TypeDescriptor, TypeDescriptor.OfField<Class<?>>
/*[ENDIF]*/
{
private static final long serialVersionUID = 3206093459760846163L;
private static ProtectionDomain AllPermissionsPD;
private static final int SYNTHETIC = 0x1000;
Expand Down Expand Up @@ -4554,11 +4562,19 @@ public Class<?>[] getNestMembers() throws LinkageError, SecurityException {

/*[IF Java12]*/
public Class<?> arrayType() {
throw new UnsupportedOperationException("Stub for Java 12 compilation");
throw new UnsupportedOperationException("Stub for Java 12 compilation (Jep334)");
}

public Class<?> componentType() {
throw new UnsupportedOperationException("Stub for Java 12 compilation (Jep334)");
}

public Optional<ClassDesc> describeConstable() {
throw new UnsupportedOperationException("Stub for Java 12 compilation");
throw new UnsupportedOperationException("Stub for Java 12 compilation (Jep334)");
}

public String descriptorString() {
throw new UnsupportedOperationException("Stub for Java 12 compilation (Jep334)");
}
/*[ENDIF] Java12 */
}
26 changes: 25 additions & 1 deletion jcl/src/java.base/share/classes/java/lang/String.java
Expand Up @@ -36,6 +36,9 @@
import java.util.function.IntUnaryOperator;
import java.util.Iterator;
import java.nio.charset.Charset;
/*[IF Java12]*/
import java.util.Optional;
/*[ENDIF]*/
import java.util.Spliterator;
import java.util.stream.StreamSupport;

Expand All @@ -50,6 +53,13 @@
import java.util.stream.Stream;
/*[ENDIF] Java11*/

/*[IF Java12]*/
import java.lang.constant.Constable;
import java.lang.constant.ConstantDesc;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodHandles.Lookup;
/*[ENDIF]*/

/**
* Strings are objects which represent immutable arrays of characters.
*
Expand All @@ -58,7 +68,11 @@
*
* @see StringBuffer
*/
public final class String implements Serializable, Comparable<String>, CharSequence {
public final class String implements Serializable, Comparable<String>, CharSequence
/*[IF Java12]*/
, Constable, ConstantDesc
/*[ENDIF]*/
{

/*
* Last character of String substitute in String.replaceAll(regex, substitute) can't be \ or $.
Expand Down Expand Up @@ -8281,4 +8295,14 @@ public static String join(CharSequence delimiter, Iterable<? extends CharSequenc
}

/*[ENDIF] Sidecar19-SE*/

/*[IF Java12]*/
public Optional<String> describeConstable() {
throw new UnsupportedOperationException("Stub for Java 12 compilation (Jep334)");
}

public String resolveConstantDesc(MethodHandles.Lookup lookup) {
throw new UnsupportedOperationException("Stub for Java 12 compilation (Jep334)");
}
/*[ENDIF] Java12 */
}
Expand Up @@ -26,6 +26,10 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/*[IF Java12]*/
import java.lang.constant.Constable;
import java.lang.constant.MethodHandleDesc;
/*[ENDIF]*/
import java.lang.invoke.MethodHandles.Lookup;
import java.lang.reflect.Modifier;
import java.security.AccessController;
Expand All @@ -35,6 +39,9 @@
import java.util.List;

import java.util.Objects;
/*[IF Java12]*/
import java.util.Optional;
/*[ENDIF]*/
// {{{ JIT support
import java.util.concurrent.ConcurrentHashMap;

Expand Down Expand Up @@ -81,7 +88,11 @@
* @since 1.7
*/
@VMCONSTANTPOOL_CLASS
public abstract class MethodHandle {
public abstract class MethodHandle
/*[IF Java12]*/
implements Constable
/*[ENDIF]*/
{
/* Ensure that these stay in sync with the MethodHandleInfo constants and VM constants in VM_MethodHandleKinds.h */
/* Order matters here - static and special are direct pointers */
static final byte KIND_BOUND = 0;
Expand Down Expand Up @@ -724,6 +735,13 @@ public MethodHandle asFixedArity() {
return this;
}

/*[IF Java12]*/
public Optional<MethodHandleDesc> describeConstable() {
/* Jep334 */
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}
/*[ENDIF]*/

public MethodHandle bindTo(Object value) throws IllegalArgumentException, ClassCastException {
/*
* Check whether the first parameter has a reference type assignable from value. Note that MethodType.parameterType(0) will
Expand Down
35 changes: 29 additions & 6 deletions jcl/src/java.base/share/classes/java/lang/invoke/MethodType.java
@@ -1,6 +1,6 @@
/*[INCLUDE-IF Sidecar17]*/
/*******************************************************************************
* Copyright (c) 2009, 2018 IBM Corp. and others
* Copyright (c) 2009, 2019 IBM Corp. and others
*
* This program and the accompanying materials are made available under
* the terms of the Eclipse Public License 2.0 which accompanies this
Expand Down Expand Up @@ -28,6 +28,10 @@
import java.io.ObjectStreamException;
import java.io.ObjectStreamField;
import java.io.Serializable;
/*[IF Java12]*/
import java.lang.constant.Constable;
import java.lang.constant.MethodTypeDesc;
/*[ENDIF]*/
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
Expand All @@ -38,6 +42,9 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
/*[IF Java12]*/
import java.util.Optional;
/*[ENDIF]*/
import java.util.Set;
import java.util.WeakHashMap;

Expand All @@ -60,7 +67,11 @@
* @since 1.7
*/
@VMCONSTANTPOOL_CLASS
public final class MethodType implements Serializable {
public final class MethodType implements Serializable
/*[IF Java12]*/
, Constable, TypeDescriptor.OfMethod<Class<?>, MethodType>
/*[ENDIF]*/
{
static final Class<?>[] EMTPY_PARAMS = new Class<?>[0];
static final Set<Class<?>> WRAPPER_SET;
static {
Expand Down Expand Up @@ -854,7 +865,7 @@ public static MethodType genericMethodType(int numParameters, boolean isVarargs)
*
* @return the parameter types as an array
*/
public Class<?>[] parameterArray(){
public Class<?>[] parameterArray() {
return arguments.clone();
}

Expand All @@ -863,7 +874,7 @@ public Class<?>[] parameterArray(){
*
* @return the number of parameters
*/
public int parameterCount(){
public int parameterCount() {
return arguments.length;
}

Expand All @@ -885,7 +896,7 @@ Class<?>[] ptypes() {
*
* @return the parameter types as a List
*/
public List<Class<?>> parameterList(){
public List<Class<?>> parameterList() {
List<Class<?>> list = Arrays.asList(arguments.clone());
return Collections.unmodifiableList(list);
}
Expand All @@ -908,7 +919,7 @@ public Class<?> parameterType(int position) throws IndexOutOfBoundsException {
/**
* @return the type of the return
*/
public Class<?> returnType(){
public Class<?> returnType() {
return returnType;
}

Expand Down Expand Up @@ -1258,5 +1269,17 @@ MethodType asCollectorType(Class<?> clz, int num1) {
}
/*[ENDIF]*/
/*[ENDIF]*/

/*[IF Java12]*/
public String descriptorString() {
/* Jep334 */
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}

public Optional<MethodTypeDesc> describeConstable() {
/* Jep334 */
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}
/*[ENDIF]*/
}

44 changes: 41 additions & 3 deletions jcl/src/java.base/share/classes/java/lang/invoke/VarHandle.java
Expand Up @@ -28,6 +28,9 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/*[IF Java12]*/
import java.util.Optional;
/*[ENDIF]*/
/*[IF Sidecar19-SE]
import jdk.internal.misc.Unsafe;
/*[ELSE]*/
Expand All @@ -49,7 +52,11 @@
* VarHandle instances are created through the MethodHandles factory API.
*
*/
public abstract class VarHandle extends VarHandleInternal {
public abstract class VarHandle extends VarHandleInternal
/*[IF Java12]*/
implements Constable
/*[ENDIF]*/
{
/**
* Access mode identifiers for VarHandle operations.
*/
Expand Down Expand Up @@ -311,6 +318,29 @@ public final Class<?> varType() {
public final List<Class<?>> coordinateTypes() {
return Collections.unmodifiableList(Arrays.<Class<?>>asList(coordinateTypes));
}

/*[IF Java12]*/
public Optional<VarHandle.VarHandleDesc> describeConstable() {
/* Jep334 */
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}

@Override
public final boolean equals(Object obj) {
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}

@Override
public final int hashCode() {
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}

@Override
public final String toString() {
/* Jep334 */
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}
/*[ENDIF]*/

/**
* Each {@link AccessMode}, e.g. get and set, requires different parameters
Expand Down Expand Up @@ -931,34 +961,42 @@ MethodHandle getFromHandleTable(int operation) {

/*[IF Java12]*/
/* nominal descriptor of a VarHandle constant */
public static final class VarHandleDesc extends DynamicConstantDesc<VarHandle> {
public static final class VarHandleDesc extends DynamicConstantDesc<VarHandle> implements ConstantDesc {

protected VarHandleDesc(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs) {
super(bootstrapMethod, constantName, constantType, bootstrapArgs);
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}

public static VarHandleDesc ofArray(ClassDesc arrayClass) {
/* Jep334 */
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}

public static VarHandleDesc ofField(ClassDesc declaringClass, String name, ClassDesc fieldType) {
/* Jep334 */
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}

public static VarHandleDesc ofStaticField(ClassDesc declaringClass, String name, ClassDesc fieldType) {
/* Jep334 */
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}

public VarHandle resolveConstantDesc(MethodHandles.Lookup lookup) {
@Override
public VarHandle resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException {
/* Jep334 */
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}

@Override
public String toString() {
/* Jep334 */
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}

public ClassDesc varType() {
/* Jep334 */
throw OpenJDKCompileStub.OpenJDKCompileStubThrowError();
}
}
Expand Down

0 comments on commit b9bb3c0

Please sign in to comment.