Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8294961: Convert java.base/java.lang.reflect.ProxyGenerator to use the Classfile API to generate proxy classes #10991

Closed
wants to merge 216 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
216 commits
Select commit Hold shift + click to select a range
34c6057
Initial commit of Classfile Processing API
asotona Jun 10, 2022
6663f05
fix of javadoc link
asotona Jun 13, 2022
63d0e3b
fixed ClassPrinterTest on Windows
asotona Jun 13, 2022
02bf8b4
Update README.md
asotona Jun 14, 2022
e1386df
fixed dead code patching in StackMapGenerator::removeRangeFromExcTabl…
asotona Jun 21, 2022
0daac4a
Tweak JEP link
mcimadamore Jun 24, 2022
a5a2580
Merge master branch into classfile-api-branch
asotona Jun 27, 2022
b5267ad
removal of jdk.classfile.jdktypes.AccessFlag and redirection to java.…
asotona Jun 27, 2022
941dfb0
Classfile API javadoc build fix
asotona Jun 27, 2022
0fe61c5
fixed InvokeDynamicEntry::asSymbol and BytecodeHelpers::handleDescToH…
asotona Jun 29, 2022
a89d822
added ConstantValueAttribute::of(ConstantDesc)
asotona Jun 30, 2022
7bf66b1
added CompilationIDAttribute::of(String)
asotona Jun 30, 2022
bb7e294
TypeAnnotation and AnnotationValue API improvements
asotona Jul 1, 2022
d8f30a7
refactored to FieldModel::fieldTypeSymbol and MethodModel::methodType…
asotona Jul 1, 2022
59479ff
Model stack map frames in a type hierarchy where each type represents…
raphw Jul 4, 2022
28f560e
Merge branch 'master' into classfile-api-branch
asotona Jul 4, 2022
99a17b3
Added some testing of local variable management, with BlockBuilder
briangoetz Jul 4, 2022
f2ac770
test/jdk/jdk/classfile/examples fixed
asotona Jul 4, 2022
8480163
Fixed frame offset valid boundaries in StackMapGenerator + added test
asotona Jul 4, 2022
ace0f43
Adds toString methods to all classes that appear within a CodeModel.
raphw Jul 7, 2022
a98f860
Update README.md
asotona Jul 7, 2022
4b69c9c
new JMH micro benchmark focused on clean StackMapGenerator throughput
asotona Jul 8, 2022
0631349
PerformancePatch - avoid ArrayList in StackMapGenerator::processInvok…
asotona Jul 11, 2022
1950b1f
StackMapGenerator code cleanup
asotona Jul 11, 2022
e14f3a5
PerformancePatch - StackMapGenerator faster counting of method descri…
asotona Jul 12, 2022
5cbe442
PerformancePatch - StackMapGenerator more effective loops and other f…
asotona Jul 12, 2022
a1502e3
CodeBuilder and ClassPrinterImpl minor fixes
asotona Jul 15, 2022
4b5620e
update of AdvancedTransformationsTest::instrument
asotona Jul 15, 2022
0c80bff
CodeBuilder fixes and increased test coverage
asotona Jul 18, 2022
4c730ed
Classfile try catch
PaulSandoz Jul 19, 2022
28cb754
added missing copyright header
asotona Jul 19, 2022
3369fbb
patched test calling obsolete CodeBuilder method invokevirtual(..., b…
asotona Jul 19, 2022
e76ed5f
Fix and test CodeBuilder::swap (#26)
PaulSandoz Jul 20, 2022
b5e9ac3
added missing case for SWAP into RebuildingTransformation test helper
asotona Jul 20, 2022
482add7
Ifthenelse (#28)
PaulSandoz Jul 21, 2022
34e72c5
ClassRemapper implemenation handling RecordAttribute, InnerClassesAtt…
asotona Jul 20, 2022
946a382
Merge remote-tracking branch 'origin/master' into classfile-api-branch
asotona Jul 22, 2022
269e529
added more context to StackMapGenerator error messages
asotona Aug 3, 2022
2b471fc
new ClassPrinter API and implementation
asotona Aug 3, 2022
2c988df
StackMapGenerator appends detailed debug info about corrupted bytecod…
asotona Aug 3, 2022
3902fd2
Opcode.ISHR and LSHR fix
asotona Aug 3, 2022
b83633c
added StackMapGenerator error debug info print fallback to bytecode h…
asotona Aug 4, 2022
6c8f57a
fixed StackMapGenerator operand stack underflow reporting
asotona Aug 4, 2022
76b09c5
Classfile API stack map manual processing (#32)
asotona Aug 18, 2022
ced8ffa
removed obsolete toString
asotona Aug 18, 2022
b547682
fixed RebuildingTransformation test helper
asotona Aug 18, 2022
de17a3b
fixed ConstantPoolBuilder::methodHandleEntry
asotona Aug 18, 2022
cb17b0f
Classfile api label resolver branch (#33)
asotona Aug 19, 2022
15ba3cd
fixed LabelsRemapper
asotona Aug 29, 2022
674791a
updated AdvancedTransformationTest according to jdk.jfr
asotona Aug 30, 2022
5fd417b
Merge remote-tracking branch 'origin' into classfile-api-branch
asotona Aug 31, 2022
1bca888
Classfile api stacktracker branch (#34)
asotona Aug 31, 2022
7919e2a
added JCov report link to README.md
asotona Aug 31, 2022
c148bc2
cleanup in CodeBuilder::constantInstruction
asotona Sep 1, 2022
5e5a6c6
Merge remote-tracking branch 'origin' into classfile-api-branch
asotona Sep 8, 2022
aabda89
Add List combining methods to ClassEntry (#35)
DanHeidinga Sep 13, 2022
4b153a7
package jdk.classfile.transforms cleanup and move (#36)
asotona Sep 14, 2022
e122f39
Merge branch 'master' into classfile-api-branch
asotona Sep 16, 2022
e3a03cb
Merge branch 'master' into classfile-api-branch
asotona Sep 20, 2022
d0f7775
application of ClassDesc::ofInternalName and internal name conversion…
asotona Sep 20, 2022
aee0f85
javadoc for ClassPrinter
asotona Sep 21, 2022
c7da680
draft of jdk.classfile.components doc
asotona Sep 22, 2022
368d21c
Merge branch 'master' into classfile-api-branch
asotona Sep 22, 2022
5d94081
fixed locale in javadoc build
asotona Sep 22, 2022
b074d91
proposal to add CodeBuilder.CatchBuilder::catchingMulti (#37)
asotona Sep 26, 2022
4c36725
minor javadoc fix in CodeBuilder.CatchBuilder and assertion in CatchB…
asotona Sep 26, 2022
6274c81
CompileInterimLangtools.gmk patch allowing to compile Classfile API w…
asotona Oct 7, 2022
e0b39cf
make files and readme cleanup
asotona Oct 7, 2022
d45765b
Classfile api CodeElement.Kind cleanup (#41)
asotona Oct 17, 2022
8db63f2
Merge branch 'master' into classfile-api-branch
asotona Oct 17, 2022
7bfc295
Merge branch 'classfile-api-branch' into classfile-api-initial-branch
asotona Oct 17, 2022
dadfc01
Update README.md
asotona Oct 17, 2022
c93f199
Convert Classfile API test to use JUnit Jupiter (#44)
asotona Oct 18, 2022
1cef3f5
Convert Classfile API test to use JUnit Jupiter (#44)
asotona Oct 18, 2022
81eab8f
using JavaUtilCollectionAccess.listFromTrustedArrayNullsAllowed in An…
asotona Oct 31, 2022
9635cb2
removed tests and ClassRecord dependency on jdk.jdeps/com.sun.tools.c…
asotona Oct 31, 2022
e175c78
more @@@ Could use JavaUtilCollectionAccess cleanup
asotona Oct 31, 2022
8f4231a
BoundAttribute cleanup
asotona Oct 31, 2022
cb8c562
BytecodeHelpers::constantEntry refactored to pattern switch
asotona Oct 31, 2022
6c377a6
reversion of BytecodeHelpers::constantEntry refactored to pattern switch
asotona Oct 31, 2022
f36ff93
removed obsolete comment from CodeBuilder::trying
asotona Nov 1, 2022
493abb0
Signatures cleanup:
asotona Nov 1, 2022
953891a
removed @@@ Other overloads? from CodeBuilder::invokedynamic
asotona Nov 1, 2022
949bf9c
linked stateful and chaining transform snippets to ClassfileTransform
asotona Nov 3, 2022
ac93c66
fixed typo
asotona Nov 3, 2022
0b7cfa1
fixed javadoc of ModuleOpenInfo and ModuleRequireInfo
asotona Nov 3, 2022
674cb23
added Classfile.Option FILTER_DEAD_LABELS
asotona Nov 3, 2022
d683af8
removed obsolete factory mthods LocalVariableInfo::of and LocalVariab…
asotona Nov 3, 2022
870bff1
fixed Classfile API Javadoc build
asotona Nov 4, 2022
f91c55a
Merge branch 'master' into classfile-api-branch
asotona Nov 4, 2022
adc1edf
Merge branch 'classfile-api-branch' into classfile-api-initial-branch
asotona Nov 4, 2022
927cb6d
8294961: java.base java.lang.reflect.ProxyGenerator uses ASM to gener…
asotona Nov 4, 2022
63cdd55
removed executable flag from test/micro/org/openjdk/bench/jdk/classfi…
asotona Nov 4, 2022
897db83
removed executable flags and fixed whitespaces
asotona Nov 4, 2022
1f3fac2
removed executable
asotona Nov 4, 2022
4b3e63d
removed executable
asotona Nov 4, 2022
faf84e4
Merge branch 'JDK-8294982' into JDK-8294961
asotona Nov 4, 2022
3827e52
PackageSnippets moved from jdk/classfile/snippets to jdk/classfile/sn…
asotona Nov 28, 2022
31fa159
removal of AccessController::doPriviledged from ClassHierarchyResolver
asotona Dec 2, 2022
5345b45
javadoc cleanup
asotona Dec 13, 2022
78ba7bd
Merge branch 'master' into JDK-8294982
asotona Dec 15, 2022
a350f5b
Merge branch 'master' into JDK-8294982
asotona Dec 15, 2022
9440f86
jdk.compiler ClassWriter patch to avoid writing PREVIEW_MINOR_VERSION…
asotona Dec 16, 2022
c42dc3e
removal of Preview.java and TransPatterns.java patch
asotona Dec 16, 2022
2bfc2b1
merged JAVAC_FLAGS and EXCLUDES in Java.gmk
asotona Jan 25, 2023
931ca1c
unification of sealed class modifiers order
asotona Jan 26, 2023
806b902
update of Java version constants
asotona Jan 27, 2023
80213e6
Merge branch 'master' into JDK-8294982
asotona Jan 27, 2023
8df1dc2
Classfile API moved under jdk.internal.classfile package
asotona Feb 3, 2023
9e2a839
Merge branch 'JDK-8294982' into JDK-8294961
asotona Feb 3, 2023
c242a4a
j.l.r.ProxyGenerator fix - Classfile API moved under jdk.internal.cla…
asotona Feb 3, 2023
421f66d
TypeAnnotation.TypePathComponent cleanup
asotona Feb 6, 2023
e1f014c
obsolete identifiers and unused imports cleanup
asotona Feb 6, 2023
1aabe0e
javadoc fixes
asotona Feb 6, 2023
df08b35
javadoc fixes
asotona Feb 8, 2023
753e684
AttributeElement.Kind removal (#48)
asotona Feb 9, 2023
ec6829e
Proprietary hash-based mapping in Attributes replaced with HashMap us…
asotona Feb 9, 2023
e141e72
Merge branch 'JDK-8294982' into JDK-8294961
asotona Feb 9, 2023
9d671a0
j.l.r.ProxyGenerator improvements
asotona Feb 9, 2023
2416763
Javadoc fixes
asotona Feb 15, 2023
673887a
removed generics from Classfile.Option
asotona Feb 15, 2023
bb295b5
added missing factory methods to ModuleExportInfo and ModuleOpenInfo
asotona Feb 15, 2023
dbb9e46
removal of MemberRefEntry::isMethod and ::isInterface
asotona Feb 15, 2023
7a45ebd
added 4-byte Unicode text to Utf8EntryTest
asotona Feb 16, 2023
4d70fc2
Option keys and values accessing pulled from API to implementation
asotona Feb 17, 2023
15b69a4
removed PoolEntry::clone and ConstantPoolBuilder::maybeClone from API
asotona Feb 17, 2023
5f9f678
renamed PoolEntry::poolEntries to ::width
asotona Feb 17, 2023
1bf6201
javadoc fix
asotona Feb 17, 2023
164b486
removed obsolete public modifiers and added doc examples
asotona Feb 27, 2023
6bba309
fixed very long lines
asotona Feb 27, 2023
9f465f1
added no-lambda comment
asotona Feb 27, 2023
dfb0e00
ClassRemapper fixes
asotona Feb 27, 2023
d44633f
Update src/java.base/share/classes/jdk/internal/classfile/components/…
asotona Feb 27, 2023
9976bb8
Update src/java.base/share/classes/jdk/internal/classfile/components/…
asotona Feb 27, 2023
7cbd080
Update src/java.base/share/classes/jdk/internal/classfile/components/…
asotona Feb 27, 2023
7002d71
javadoc fixes
asotona Feb 27, 2023
234d50e
javadoc and long lines fixes
asotona Feb 28, 2023
58c9d2c
BytecodeHelpers fix
asotona Feb 28, 2023
b98d97b
InstructionData content moved to CodeImpl
asotona Mar 1, 2023
cd6e59c
removed default constructor from AttributeHolder
asotona Mar 1, 2023
f6c6561
LabelImpl get/setContextInfo renamed to get/setBCI
asotona Mar 1, 2023
212bb04
javadoc fix
asotona Mar 1, 2023
1892e30
ConcreteEntry renamed to AbstractPoolEntry
asotona Mar 1, 2023
03a39a4
renamed ConcreteBootstrapMethodEntry to BootstrapMethodEntryImpl
asotona Mar 1, 2023
36bbdf6
abstract implementations of RefEntry, RefsEntry and NamedEntry rename…
asotona Mar 1, 2023
1e95e50
renamed all remaining ConcreteXyzEntry to XyzEntryImpl
asotona Mar 1, 2023
5486011
default constantValue delegating to asSymbol pulled from implementati…
asotona Mar 2, 2023
e424f3f
fixed PackageSnipets
asotona Mar 2, 2023
6ac830d
removed unused imports
asotona Mar 2, 2023
1d747dd
removed static implementation methods from ClassEntry
asotona Mar 2, 2023
70ec5ec
ConstantPoolBuilder::natEntry renamed to nameAndTypeEntry
asotona Mar 2, 2023
a1b70d2
SplitConstantPool fixes
asotona Mar 2, 2023
ab4fba3
Update src/java.base/share/classes/jdk/internal/classfile/impl/Tempor…
asotona Mar 2, 2023
e674bad
Update src/java.base/share/classes/jdk/internal/classfile/ClassReader…
asotona Mar 2, 2023
793de43
Update src/java.base/share/classes/jdk/internal/classfile/ClassModel.…
asotona Mar 2, 2023
79ce169
Update src/java.base/share/classes/jdk/internal/classfile/attribute/C…
asotona Mar 2, 2023
c0e8015
ClassReader::readXyzEntry methods throw IllegalArgumentException inst…
asotona Mar 2, 2023
13d78c9
added comment to CodeAttribute::labelToBci
asotona Mar 2, 2023
074dd30
StackMapFrameInfo extracted to top level from StackMapTableAttribute
asotona Mar 2, 2023
6fa25dd
Update src/java.base/share/classes/jdk/internal/classfile/snippet-fil…
asotona Mar 3, 2023
22113cb
Update src/java.base/share/classes/jdk/internal/classfile/instruction…
asotona Mar 3, 2023
02bd6dc
Update src/java.base/share/classes/jdk/internal/classfile/instruction…
asotona Mar 3, 2023
1e4ea41
Update src/java.base/share/classes/jdk/internal/classfile/instruction…
asotona Mar 3, 2023
5526535
Update src/java.base/share/classes/jdk/internal/classfile/CodeBuilder…
asotona Mar 3, 2023
0bd5281
Update src/java.base/share/classes/jdk/internal/classfile/CodeBuilder…
asotona Mar 3, 2023
e5fd576
Update src/java.base/share/classes/jdk/internal/classfile/impl/Nonter…
asotona Mar 3, 2023
79bfd4c
Update src/java.base/share/classes/jdk/internal/classfile/TypeKind.java
asotona Mar 3, 2023
b03f15c
Signature.TypeArg does not inherit from Signature
asotona Mar 3, 2023
324d033
CodeRelabeler fix
asotona Mar 3, 2023
8561d13
factory methods to CharacterRange, LineNumber, LocalVariable and Loca…
asotona Mar 3, 2023
c458698
removed obsolete generic parameter from AbstractDirectBuilder
asotona Mar 3, 2023
4aa9887
TransformImpl.FakeXyzTransform renamed to UnresolvedXyzTransform
asotona Mar 3, 2023
173dc1e
fixed AccessFlags javadoc
asotona Mar 3, 2023
6d3e6d7
Update src/java.base/share/classes/jdk/internal/classfile/impl/Bootst…
asotona Mar 6, 2023
eee82ef
Update src/java.base/share/classes/jdk/internal/classfile/impl/Bootst…
asotona Mar 6, 2023
9880458
Update src/java.base/share/classes/jdk/internal/classfile/impl/ClassP…
asotona Mar 6, 2023
b44f47b
Update src/java.base/share/classes/jdk/internal/classfile/impl/Util.java
asotona Mar 6, 2023
a40842c
Update src/java.base/share/classes/jdk/internal/classfile/impl/Attrib…
asotona Mar 6, 2023
61ff1c7
removed unused methods, fields and parameters
asotona Mar 6, 2023
0c718a2
fixed handling of array descriptors by Util::toInternalName
asotona Mar 6, 2023
46fffe4
simplified CodeImpl.SINGLETON_INSTRUCTIONS initialization
asotona Mar 6, 2023
0e43af6
simplified initialization of terminal builder in chained builders
asotona Mar 6, 2023
6df1297
snippets and tests synced with jdk.jfr class instrumentation source code
asotona Mar 6, 2023
a87d009
generic implementation of ResolvedTransform
asotona Mar 7, 2023
2b1bd7f
Shared `toString` formats for bound and unbound instructions
asotona Mar 7, 2023
7a2b5cb
fixed CodeRelabeler javadoc
asotona Mar 7, 2023
a994c57
package jdk.internal.classfile.jdktypes moved to jdk.internal.classfi…
asotona Mar 7, 2023
f14287d
fixed new lines at end of file
asotona Mar 7, 2023
4680572
Merge branch 'master' into JDK-8294982
asotona Mar 7, 2023
65a6913
fixed CodeBuilder:constantInstruction for -0.0d and -0.0f values and …
asotona Mar 8, 2023
b49aae8
EntryMap::nextPowerOfTwo delegates to Long:numberOfLeadingZeros
asotona Mar 8, 2023
cd4a01c
minor fix in CodeBuilder and added test cases to LDCTest
asotona Mar 8, 2023
385cb26
removed obsolete javadoc from implementation classes
asotona Mar 8, 2023
0330c48
Merge branch 'JDK-8294982' into JDK-8294961
asotona Mar 8, 2023
48ac16f
Merge branch 'master' into JDK-8294961-proxy
asotona Mar 9, 2023
951b1bc
Merge branch 'master' into JDK-8294961-proxy
asotona Mar 10, 2023
fc1380a
Apply suggestions from code review
asotona Mar 16, 2023
2b23276
improved method descriptor construction
asotona Mar 16, 2023
3348f9b
MethodTypeDesc performance improvements
asotona Mar 22, 2023
ea974be
ClassEntry caching ClassDesc to improve performance
asotona Mar 22, 2023
2787185
Merge branch 'master' into JDK-8294961
asotona Mar 22, 2023
ff79658
StackMapGenerator performance improvements
asotona Mar 23, 2023
3692782
Apply suggestions from code review
asotona Mar 27, 2023
3352329
cleanup of NAME_CTOR and NAME_CLINIT in ProxyGenerator
asotona Mar 27, 2023
14d7a24
SplitConstantPool performance improvement
asotona Mar 27, 2023
8de24dc
StackMapGenerator performance improvements
asotona Mar 27, 2023
79df3f1
Revert "StackMapGenerator performance improvements"
asotona Apr 26, 2023
1756539
Revert "SplitConstantPool performance improvement"
asotona Apr 26, 2023
4fd22c5
Revert "StackMapGenerator performance improvements"
asotona Apr 26, 2023
604146c
reverted Constants API changes
asotona Apr 26, 2023
2294bc8
Revert "ClassEntry caching ClassDesc to improve performance"
asotona Apr 26, 2023
848161a
Merge branch 'master' into JDK-8294961-proxy
asotona Jun 7, 2023
a101e21
Merge branch 'master' into JDK-8294961-proxy
asotona Jun 8, 2023
9cf3bc2
application of new ClassHierarchyResolver factory methods
asotona Jun 8, 2023
6de5a55
Merge branch 'master' into JDK-8294961-proxy
asotona Jun 27, 2023
554a794
fixed ProxyGenerator
asotona Jun 27, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -657,7 +657,8 @@ private ProxyMethod(Method method, String methodFieldName) {
* Generate this method, including the code and exception table entry.
*/
private void generateMethod(ClassBuilder clb, ClassDesc className) {
MethodTypeDesc desc = MethodType.methodType(returnType, parameterTypes).describeConstable().orElseThrow();
MethodTypeDesc desc = MethodTypeDesc.of(toClassDesc(returnType),
Arrays.stream(parameterTypes).map(ProxyGenerator::toClassDesc).toArray(ClassDesc[]::new));
int accessFlags = (method.isVarArgs()) ? ACC_VARARGS | ACC_PUBLIC | ACC_FINAL
: ACC_PUBLIC | ACC_FINAL;
var catchList = computeUniqueCatchList(exceptionTypes);