@@ -132,12 +132,13 @@ class CallGraph[BT <: BTypes](val btypes: BT) {
132
132
(declarationClassNode, source) <- byteCodeRepository.classNodeAndSource(declarationClass): Either [OptimizerWarning , (ClassNode , Source )]
133
133
} yield {
134
134
val declarationClassBType = classBTypeFromClassNode(declarationClassNode)
135
- val CallsiteInfo (safeToInline, safeToRewrite, annotatedInline, annotatedNoInline, samParamTypes, warning) = analyzeCallsite(method, declarationClassBType, call.owner, source)
135
+ val CallsiteInfo (safeToInline, safeToRewrite, canInlineFromSource, annotatedInline, annotatedNoInline, samParamTypes, warning) = analyzeCallsite(method, declarationClassBType, call.owner, source)
136
136
Callee (
137
137
callee = method,
138
138
calleeDeclarationClass = declarationClassBType,
139
139
safeToInline = safeToInline,
140
140
safeToRewrite = safeToRewrite,
141
+ canInlineFromSource = canInlineFromSource,
141
142
annotatedInline = annotatedInline,
142
143
annotatedNoInline = annotatedNoInline,
143
144
samParamTypes = samParamTypes,
@@ -255,7 +256,7 @@ class CallGraph[BT <: BTypes](val btypes: BT) {
255
256
/**
256
257
* Just a named tuple used as return type of `analyzeCallsite`.
257
258
*/
258
- private case class CallsiteInfo (safeToInline : Boolean , safeToRewrite : Boolean ,
259
+ private case class CallsiteInfo (safeToInline : Boolean , safeToRewrite : Boolean , canInlineFromSource : Boolean ,
259
260
annotatedInline : Boolean , annotatedNoInline : Boolean ,
260
261
samParamTypes : IntMap [ClassBType ],
261
262
warning : Option [CalleeInfoWarning ])
@@ -316,20 +317,21 @@ class CallGraph[BT <: BTypes](val btypes: BT) {
316
317
! BytecodeUtils .isConstructor(calleeMethodNode) &&
317
318
! BytecodeUtils .isNativeMethod(calleeMethodNode) &&
318
319
! BytecodeUtils .hasCallerSensitiveAnnotation(calleeMethodNode),
319
- safeToRewrite = canInlineFromSource && isRewritableTraitCall, // (2)
320
- annotatedInline = methodInlineInfo.annotatedInline,
321
- annotatedNoInline = methodInlineInfo.annotatedNoInline,
322
- samParamTypes = samParamTypes(calleeMethodNode, receiverType),
323
- warning = warning)
320
+ safeToRewrite = canInlineFromSource && isRewritableTraitCall, // (2)
321
+ canInlineFromSource = canInlineFromSource,
322
+ annotatedInline = methodInlineInfo.annotatedInline,
323
+ annotatedNoInline = methodInlineInfo.annotatedNoInline,
324
+ samParamTypes = samParamTypes(calleeMethodNode, receiverType),
325
+ warning = warning)
324
326
325
327
case None =>
326
328
val warning = MethodInlineInfoMissing (calleeDeclarationClassBType.internalName, calleeMethodNode.name, calleeMethodNode.desc, calleeDeclarationClassBType.info.orThrow.inlineInfo.warning)
327
- CallsiteInfo (false , false , false , false , IntMap .empty, Some (warning))
329
+ CallsiteInfo (false , false , false , false , false , IntMap .empty, Some (warning))
328
330
}
329
331
} catch {
330
332
case Invalid (noInfo : NoClassBTypeInfo ) =>
331
333
val warning = MethodInlineInfoError (calleeDeclarationClassBType.internalName, calleeMethodNode.name, calleeMethodNode.desc, noInfo)
332
- CallsiteInfo (false , false , false , false , IntMap .empty, Some (warning))
334
+ CallsiteInfo (false , false , false , false , false , IntMap .empty, Some (warning))
333
335
}
334
336
}
335
337
@@ -393,7 +395,7 @@ class CallGraph[BT <: BTypes](val btypes: BT) {
393
395
* gathering the information about this callee.
394
396
*/
395
397
final case class Callee (callee : MethodNode , calleeDeclarationClass : ClassBType ,
396
- safeToInline : Boolean , safeToRewrite : Boolean ,
398
+ safeToInline : Boolean , safeToRewrite : Boolean , canInlineFromSource : Boolean ,
397
399
annotatedInline : Boolean , annotatedNoInline : Boolean ,
398
400
samParamTypes : IntMap [ClassBType ],
399
401
calleeInfoWarning : Option [CalleeInfoWarning ]) {
0 commit comments