mirror of
https://github.com/openjdk/jdk.git
synced 2026-01-28 03:58:21 +00:00
add missing files
This commit is contained in:
parent
44981e6b69
commit
33f92068a0
@ -1472,6 +1472,9 @@ jvmtiError VM_RedefineClasses::load_new_class_versions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
res = merge_cp_and_rewrite(the_class, scratch_class, THREAD);
|
res = merge_cp_and_rewrite(the_class, scratch_class, THREAD);
|
||||||
|
if (res != JVMTI_ERROR_NONE) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
if (HAS_PENDING_EXCEPTION) {
|
if (HAS_PENDING_EXCEPTION) {
|
||||||
Symbol* ex_name = PENDING_EXCEPTION->klass()->name();
|
Symbol* ex_name = PENDING_EXCEPTION->klass()->name();
|
||||||
log_info(redefine, class, load, exceptions)("merge_cp_and_rewrite exception: '%s'", ex_name->as_C_string());
|
log_info(redefine, class, load, exceptions)("merge_cp_and_rewrite exception: '%s'", ex_name->as_C_string());
|
||||||
@ -2045,7 +2048,7 @@ bool VM_RedefineClasses::rewrite_cp_refs_in_record_attribute(InstanceKlass* scra
|
|||||||
AnnotationArray* type_annotations = component->type_annotations();
|
AnnotationArray* type_annotations = component->type_annotations();
|
||||||
if (type_annotations != nullptr && type_annotations->length() != 0) {
|
if (type_annotations != nullptr && type_annotations->length() != 0) {
|
||||||
int byte_i = 0; // byte index into annotations
|
int byte_i = 0; // byte index into annotations
|
||||||
if (!rewrite_cp_refs_in_annotations_typeArray(type_annotations, byte_i)) {
|
if (!rewrite_cp_refs_in_type_annotations_typeArray(type_annotations, byte_i, "record_info")) {
|
||||||
log_debug(redefine, class, annotation)("bad record_component_type_annotations at %d", i);
|
log_debug(redefine, class, annotation)("bad record_component_type_annotations at %d", i);
|
||||||
// propagate failure back to caller
|
// propagate failure back to caller
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -33,7 +33,7 @@ public class TestRetransformRecord {
|
|||||||
try (FileInputStream str = new FileInputStream(clsfile)) {
|
try (FileInputStream str = new FileInputStream(clsfile)) {
|
||||||
buf = NamedBuffer.loadBufferFromStream(str);
|
buf = NamedBuffer.loadBufferFromStream(str);
|
||||||
}
|
}
|
||||||
Instrumentation inst = RedefineClassHelper.instrumentation;
|
Instrumentation inst = RedefineClassHelper.instrumentation;
|
||||||
inst.addTransformer(new IdentityTransformer("MyRecord", buf), true);
|
inst.addTransformer(new IdentityTransformer("MyRecord", buf), true);
|
||||||
inst.retransformClasses(MyRecord.class);
|
inst.retransformClasses(MyRecord.class);
|
||||||
System.out.println(MyRecord.parse("foo"));
|
System.out.println(MyRecord.parse("foo"));
|
||||||
@ -51,10 +51,10 @@ class IdentityTransformer implements ClassFileTransformer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public byte[] transform(ClassLoader loader,
|
public byte[] transform(ClassLoader loader,
|
||||||
String classPath,
|
String classPath,
|
||||||
Class<?> classBeingRedefined,
|
Class<?> classBeingRedefined,
|
||||||
ProtectionDomain protectionDomain,
|
ProtectionDomain protectionDomain,
|
||||||
byte[] classfileBuffer) {
|
byte[] classfileBuffer) {
|
||||||
if (classPath != null && classPath.equals(className.replace('.', '/'))) {
|
if (classPath != null && classPath.equals(className.replace('.', '/'))) {
|
||||||
System.out.println("Transforming " + className);
|
System.out.println("Transforming " + className);
|
||||||
return buffer;
|
return buffer;
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# move MyRecord class file created from jcod file to the altered directory
|
||||||
mkdir $TESTCLASSES/altered
|
mkdir $TESTCLASSES/altered
|
||||||
mv $TESTCLASSES/MyRecord.class $TESTCLASSES/altered/MyRecord.class
|
mv $TESTCLASSES/MyRecord.class $TESTCLASSES/altered/MyRecord.class
|
||||||
|
|||||||
@ -107,7 +107,7 @@ public class RedefineClassHelper {
|
|||||||
* Main method to be invoked before test to create the redefineagent.jar
|
* Main method to be invoked before test to create the redefineagent.jar
|
||||||
*/
|
*/
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
String manifest = "Premain-Class: RedefineClassHelper\nCan-Redefine-Classes: true\n";
|
String manifest = "Premain-Class: RedefineClassHelper\nCan-Redefine-Classes: true\nCan-Retransform-Classes: true\n";
|
||||||
ClassFileInstaller.writeJar("redefineagent.jar", ClassFileInstaller.Manifest.fromString(manifest), "RedefineClassHelper");
|
ClassFileInstaller.writeJar("redefineagent.jar", ClassFileInstaller.Manifest.fromString(manifest), "RedefineClassHelper");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user