This class mainly contains the method classBTypeFromSymbol, which extracts the necessary information from a symbol and its type to create the correpsonding ClassBType. It requires access to the compiler (global parameter).
The mixin CoreBTypes defines core BTypes that are used in the backend. Building these BTypes uses classBTypeFromSymbol, hence requires access to the compiler (global).
BTypesFromSymbols extends BTypes because the implementation of BTypes requires access to some of the core btypes. They are declared in BTypes as abstract members. Note that BTypes does not have access to the compiler instance.
A map from internal names to ClassBTypes. Every ClassBType is added to this map on its construction.
This map is used when computing stack map frames. The asm.ClassWriter invokes the method
getCommonSuperClass. In this method we need to obtain the ClassBType for a given internal
name. The method assumes that every class type that appears in the bytecode exists in the map.
Concurrent because stack map frames are computed when in the class writer, which might run on multiple classes concurrently.
Cache for the method classBTypeFromSymbol.
The ClassBType for a class symbol
Return the Java modifiers for the given symbol. Java modifiers for classes: - public, abstract, final, strictfp (not used) for interfaces: - the same as for classes, without 'final' for fields: - public, private (*) - static, final for methods: - the same as for fields, plus: - abstract, synchronized (not used), strictfp (not used), native (not used) for all: - deprecated
(*) protected cannot be used, since inner classes 'see' protected members, and they would fail verification after lifted.