-
Notifications
You must be signed in to change notification settings - Fork 23
What's new in 0.5
szegedi edited this page Feb 21, 2013
·
9 revisions
- Detection of frequently relinked call sites.
DynamicLinkerFactory.setUnstableRelinkThreshold()
can be used to set the number of times a call site has to be relinked to be considered unstable. Once such a call site was detected, subsequent requests to link it will return true from the new methodLinkRequest.isCallSiteUnstable()
. Individual linkers can use this flag as a hint that they should try to produce linkage that is more stable (and probably more generic and thus less efficient, but still more efficient than the call site constantly being relinked). -
StaticClassLinker
now exposes inner classes as properties of the outer class. Both static and non-static inner classes are exposed. For non-static ones an explicit instance of the outer class must be passed as the first constructor argument when creating instances. - Dynalink is even more security-savvy than before; even if it itself runs with wide set of privileges in a JVM with a security manager present, it will not allow access to classes in restricted packages (those normally specified in
package.access
property of thejre/lib/security/java.security
file).
-
DynamicLinker.getRelinkedCallSiteLocation()
provides access to the location (class name, file, line number) of the call site being relinked on the current thread. -
GuardedInvocation.asType(LinkerServices, MethodType)
for convenient coercing of invocation and guard using all language-specific conversions.
- There is now more information in Dynalink's JAR file manifest, and a JAR index is also produced.
- Fixed a bug with exposing boolean static properties defined with an
isXxx()
static getter method. - Fixed a bug that failed to convert the guard when the invocation was already of correct method type in
GuardedInvocation.asType(MethodType)
. - Fixed a bug that made it impossible to introspect classes that subclassed a non-public class but inherited its implementation of a public method declared in an interface. The bug only manifested itself for classes compiled with fairly old versions of javac, though.
-
RelinkableCallSite.setRelinkAndInvoke()
is now namedRelinkableCallSite.initialize()
. -
RelinkableCallSite.setGuardedInvocation()
is now namedRelinkableCallSite.relink()
. -
RelinkableCallSite
now has a new method that must be implemented,resetAndRelink()
. - Lots of methods for adaptation of
CallSiteDescriptor
have been moved out of the interface, lessening the implementation burden for it. Only a generic adapterchangeMethodType(MethodType)
remains, and others are now reimplemented in terms of it as static methods onCallSiteDescriptorFactory
.