Skip to content

Commit

Permalink
Qute - avoid BytecodeCreator.loadClassFromTCCL() in generated classes
Browse files Browse the repository at this point in the history
- it should not be needed and it reduces the performance
- revert the changes introduced by
quarkusio#22928
  • Loading branch information
mkouba committed Jun 15, 2022
1 parent b2c2e59 commit 6266253
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ private void implementResolve(ClassCreator valueResolver, ClassInfo declaringCla
// Last param is varargs
Type varargsParam = params.get(lastIdx).type;
ResultHandle componentType = tryCatch
.loadClassFromTCCL(varargsParam.asArrayType().component().name().toString());
.loadClass(varargsParam.asArrayType().component().name().toString());
ResultHandle varargsResults = tryCatch.invokeVirtualMethod(
Descriptors.EVALUATED_PARAMS_GET_VARARGS_RESULTS,
evaluatedParamsHandle, tryCatch.load(evaluated.size()), componentType);
Expand Down Expand Up @@ -357,7 +357,7 @@ private void implementAppliesTo(ClassCreator valueResolver, MethodInfo method, S
// Test base object class
ResultHandle baseClass = appliesTo.invokeVirtualMethod(Descriptors.GET_CLASS, base);
// Perform autoboxing for primitives
ResultHandle testClass = appliesTo.loadClassFromTCCL(box(params.getFirst(ParamKind.BASE).type).name().toString());
ResultHandle testClass = appliesTo.loadClass(box(params.getFirst(ParamKind.BASE).type).name().toString());
ResultHandle baseClassTest = appliesTo.invokeVirtualMethod(Descriptors.IS_ASSIGNABLE_FROM, testClass,
baseClass);
BytecodeCreator baseNotAssignable = appliesTo.ifTrue(baseClassTest).falseBranch();
Expand Down Expand Up @@ -557,7 +557,7 @@ public void addMethod(MethodInfo method, String matchName, String matchRegex) {
// Last param is varargs
Type varargsParam = params.get(lastIdx).type;
ResultHandle componentType = tryCatch
.loadClassFromTCCL(varargsParam.asArrayType().component().name().toString());
.loadClass(varargsParam.asArrayType().component().name().toString());
ResultHandle varargsResults = tryCatch.invokeVirtualMethod(
Descriptors.EVALUATED_PARAMS_GET_VARARGS_RESULTS,
whenEvaluatedParams, tryCatch.load(evaluated.size()), componentType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -801,7 +801,7 @@ private void matchMethods(String matchName, int matchParamsCount, Collection<Met
// Then we need to create an array for the last argument
Type varargsParam = parameterTypes.get(parameterTypes.size() - 1);
ResultHandle componentType = tryCatch
.loadClassFromTCCL(varargsParam.asArrayType().component().name().toString());
.loadClass(varargsParam.asArrayType().component().name().toString());
ResultHandle varargsResults = tryCatch.invokeVirtualMethod(Descriptors.EVALUATED_PARAMS_GET_VARARGS_RESULTS,
evaluatedParams, tryCatch.load(parameterTypes.size()), componentType);
// E.g. String, String, String -> String, String[]
Expand Down Expand Up @@ -870,27 +870,27 @@ static ResultHandle loadParamType(BytecodeCreator creator, Type paramType) {
if (org.jboss.jandex.Type.Kind.PRIMITIVE.equals(paramType.kind())) {
switch (paramType.asPrimitiveType().primitive()) {
case INT:
return creator.loadClassFromTCCL(Integer.class);
return creator.loadClass(Integer.class);
case LONG:
return creator.loadClassFromTCCL(Long.class);
return creator.loadClass(Long.class);
case BOOLEAN:
return creator.loadClassFromTCCL(Boolean.class);
return creator.loadClass(Boolean.class);
case BYTE:
return creator.loadClassFromTCCL(Byte.class);
return creator.loadClass(Byte.class);
case CHAR:
return creator.loadClassFromTCCL(Character.class);
return creator.loadClass(Character.class);
case DOUBLE:
return creator.loadClassFromTCCL(Double.class);
return creator.loadClass(Double.class);
case FLOAT:
return creator.loadClassFromTCCL(Float.class);
return creator.loadClass(Float.class);
case SHORT:
return creator.loadClassFromTCCL(Short.class);
return creator.loadClass(Short.class);
default:
throw new IllegalArgumentException("Unsupported primitive type: " + paramType);
}
}
// TODO: we should probably use the TCCL to load the param type
return creator.loadClassFromTCCL(paramType.name().toString());
return creator.loadClass(paramType.name().toString());
}

private BytecodeCreator createMatchScope(BytecodeCreator bytecodeCreator, String methodName, int methodParams,
Expand Down Expand Up @@ -928,7 +928,7 @@ private void implementAppliesTo(ClassCreator valueResolver, ClassInfo clazz) {

// Test base object class
ResultHandle baseClass = baseNotNullBranch.invokeVirtualMethod(Descriptors.GET_CLASS, base);
ResultHandle testClass = baseNotNullBranch.loadClassFromTCCL(clazz.name().toString());
ResultHandle testClass = baseNotNullBranch.loadClass(clazz.name().toString());
ResultHandle test = baseNotNullBranch.invokeVirtualMethod(Descriptors.IS_ASSIGNABLE_FROM, testClass, baseClass);
BytecodeCreator baseAssignableBranch = baseNotNullBranch.ifNonZero(test).trueBranch();
baseAssignableBranch.returnValue(baseAssignableBranch.load(true));
Expand Down

0 comments on commit 6266253

Please sign in to comment.