Mercurial > hg > graal-jvmci-8
comparison src/share/vm/oops/constMethod.cpp @ 8719:c8b31b461e1a
8003419: NPG: Clean up metadata created during class loading if failure
Summary: Store metadata on ClassFileParser instance to be cleaned up by destructor. This enabled some refactoring of the enormous parseClassFile function.
Reviewed-by: jmasa, acorn
author | coleenp |
---|---|
date | Wed, 13 Mar 2013 17:34:29 -0400 |
parents | 5939f5953b45 |
children | 0c3ee6f1fa23 |
comparison
equal
deleted
inserted
replaced
8718:0ede345ec7c9 | 8719:c8b31b461e1a |
---|---|
65 set_max_locals(0); | 65 set_max_locals(0); |
66 set_method_idnum(0); | 66 set_method_idnum(0); |
67 set_size_of_parameters(0); | 67 set_size_of_parameters(0); |
68 } | 68 } |
69 | 69 |
70 // Accessor that copies to metadata. | |
71 void ConstMethod::copy_stackmap_data(ClassLoaderData* loader_data, | |
72 u1* sd, int length, TRAPS) { | |
73 _stackmap_data = MetadataFactory::new_array<u1>(loader_data, length, CHECK); | |
74 memcpy((void*)_stackmap_data->adr_at(0), (void*)sd, length); | |
75 } | |
70 | 76 |
71 // Deallocate metadata fields associated with ConstMethod* | 77 // Deallocate metadata fields associated with ConstMethod* |
72 void ConstMethod::deallocate_contents(ClassLoaderData* loader_data) { | 78 void ConstMethod::deallocate_contents(ClassLoaderData* loader_data) { |
73 if (stackmap_data() != NULL) { | 79 if (stackmap_data() != NULL) { |
74 MetadataFactory::free_array<u1>(loader_data, stackmap_data()); | 80 MetadataFactory::free_array<u1>(loader_data, stackmap_data()); |