8147634: Need a JImage API that given a JImageLocationRef returns class name
Reviewed-by: hseigel
This commit is contained in:
parent
c95df8b9fe
commit
ce076f3ab9
@ -98,12 +98,13 @@ static Crc32_t Crc32 = NULL;
|
|||||||
|
|
||||||
// Entry points for jimage.dll for loading jimage file entries
|
// Entry points for jimage.dll for loading jimage file entries
|
||||||
|
|
||||||
static JImageOpen_t JImageOpen = NULL;
|
static JImageOpen_t JImageOpen = NULL;
|
||||||
static JImageClose_t JImageClose = NULL;
|
static JImageClose_t JImageClose = NULL;
|
||||||
static JImagePackageToModule_t JImagePackageToModule = NULL;
|
static JImagePackageToModule_t JImagePackageToModule = NULL;
|
||||||
static JImageFindResource_t JImageFindResource = NULL;
|
static JImageFindResource_t JImageFindResource = NULL;
|
||||||
static JImageGetResource_t JImageGetResource = NULL;
|
static JImageGetResource_t JImageGetResource = NULL;
|
||||||
static JImageResourceIterator_t JImageResourceIterator = NULL;
|
static JImageResourceIterator_t JImageResourceIterator = NULL;
|
||||||
|
static JImage_ResourcePath_t JImageResourcePath = NULL;
|
||||||
|
|
||||||
// Globals
|
// Globals
|
||||||
|
|
||||||
@ -925,6 +926,8 @@ void ClassLoader::load_jimage_library() {
|
|||||||
guarantee(JImageGetResource != NULL, "function JIMAGE_GetResource not found");
|
guarantee(JImageGetResource != NULL, "function JIMAGE_GetResource not found");
|
||||||
JImageResourceIterator = CAST_TO_FN_PTR(JImageResourceIterator_t, os::dll_lookup(handle, "JIMAGE_ResourceIterator"));
|
JImageResourceIterator = CAST_TO_FN_PTR(JImageResourceIterator_t, os::dll_lookup(handle, "JIMAGE_ResourceIterator"));
|
||||||
guarantee(JImageResourceIterator != NULL, "function JIMAGE_ResourceIterator not found");
|
guarantee(JImageResourceIterator != NULL, "function JIMAGE_ResourceIterator not found");
|
||||||
|
JImageResourcePath = CAST_TO_FN_PTR(JImage_ResourcePath_t, os::dll_lookup(handle, "JIMAGE_ResourcePath"));
|
||||||
|
guarantee(JImageResourcePath != NULL, "function JIMAGE_ResourcePath not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
jboolean ClassLoader::decompress(void *in, u8 inSize, void *out, u8 outSize, char **pmsg) {
|
jboolean ClassLoader::decompress(void *in, u8 inSize, void *out, u8 outSize, char **pmsg) {
|
||||||
|
@ -179,3 +179,20 @@ extern "C" void JIMAGE_ResourceIterator(JImageFile* jimage,
|
|||||||
|
|
||||||
typedef void (*JImageResourceIterator_t)(JImageFile* jimage,
|
typedef void (*JImageResourceIterator_t)(JImageFile* jimage,
|
||||||
JImageResourceVisitor_t visitor, void* arg);
|
JImageResourceVisitor_t visitor, void* arg);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* JIMAGE_ResourcePath- Given an open image file, a location reference, a buffer
|
||||||
|
* and a maximum buffer size, copy the path of the resource into the buffer.
|
||||||
|
* Returns false if not a valid location reference.
|
||||||
|
*
|
||||||
|
* Ex.
|
||||||
|
* JImageLocationRef location = ...
|
||||||
|
* char path[JIMAGE_MAX_PATH];
|
||||||
|
* (*JImageResourcePath)(image, location, path, JIMAGE_MAX_PATH);
|
||||||
|
*/
|
||||||
|
extern "C" bool JIMAGE_ResourcePath(JImageFile* image, JImageLocationRef locationRef,
|
||||||
|
char* path, size_t max);
|
||||||
|
|
||||||
|
typedef bool (*JImage_ResourcePath_t)(JImageFile* jimage, JImageLocationRef location,
|
||||||
|
char* buffer, jlong size);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user