graemerocher
2017-03-17 14:03:48 +01:00
parent 386a7dcb03
commit 0cfd2ff9f4
3 changed files with 71 additions and 2 deletions

View File

@@ -150,8 +150,8 @@ public class Java8 {
if (null == ownerRType || !ownerRType.hasBeenReloaded()) {
// target containing the reference/lambdaMethod has not been reloaded, no need to get over
// complicated.
Class<?> ownerClazz = ownerRType.getClazz();
implMethod = caller.findVirtual(ownerClazz, name, implMethodType);
Class<?> clazz = callerLoader.loadClass(owner.replace("/", "."));
implMethod = caller.findVirtual(clazz, name, implMethodType);
}
else {
MethodMember targetReferenceMethodMember = ownerRType.getCurrentMethod(name, descriptor);

View File

@@ -68,6 +68,26 @@ public class Java8Tests extends SpringLoadedTests {
// TODO should assert something but the issue is that the JVM crashes...
}
@Test
public void issue173() throws Exception {
String t = "bugs.Issue173";
TypeRegistry typeRegistry = getTypeRegistry(t);
byte[] sc = loadBytesForClass(t);
ReloadableType rtype = typeRegistry.addType(t, sc);
Class<?> clazz = rtype.getClazz();
@SuppressWarnings("unused")
Result r = runUnguarded(clazz, "run");
r = runUnguarded(clazz, "run");
rtype.loadNewVersion("002", rtype.bytesInitial);
r = runUnguarded(clazz, "run");
assertEquals("https://www.redacted.com/path", r.returnValue);
}
@Test
public void callBasicType() throws Exception {
String t = "basic.FirstClass";