< prev index next >

src/hotspot/share/prims/whitebox.cpp

Print this page




1487 WB_END
1488 
1489 WB_ENTRY(jlong, WB_GetThreadRemainingStackSize(JNIEnv* env, jobject o))
1490   JavaThread* t = JavaThread::current();
1491   return (jlong) t->stack_available(os::current_stack_pointer()) - (jlong)JavaThread::stack_shadow_zone_size();
1492 WB_END
1493 
1494 
1495 int WhiteBox::array_bytes_to_length(size_t bytes) {
1496   return Array<u1>::bytes_to_length(bytes);
1497 }
1498 
1499 WB_ENTRY(jlong, WB_AllocateMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong size))
1500   if (size < 0) {
1501     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
1502         err_msg("WB_AllocateMetaspace: size is negative: " JLONG_FORMAT, size));
1503   }
1504 
1505   oop class_loader_oop = JNIHandles::resolve(class_loader);
1506   ClassLoaderData* cld = class_loader_oop != NULL
1507       ? java_lang_ClassLoader::loader_data(class_loader_oop)
1508       : ClassLoaderData::the_null_class_loader_data();
1509 
1510   void* metadata = MetadataFactory::new_array<u1>(cld, WhiteBox::array_bytes_to_length((size_t)size), thread);
1511 
1512   return (jlong)(uintptr_t)metadata;
1513 WB_END
1514 
1515 WB_ENTRY(void, WB_FreeMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong addr, jlong size))
1516   oop class_loader_oop = JNIHandles::resolve(class_loader);
1517   ClassLoaderData* cld = class_loader_oop != NULL
1518       ? java_lang_ClassLoader::loader_data(class_loader_oop)
1519       : ClassLoaderData::the_null_class_loader_data();
1520 
1521   MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr);
1522 WB_END
1523 
1524 WB_ENTRY(void, WB_DefineModule(JNIEnv* env, jobject o, jobject module, jboolean is_open,
1525                                 jstring version, jstring location, jobjectArray packages))
1526   ResourceMark rm(THREAD);
1527 
1528   objArrayOop packages_oop = objArrayOop(JNIHandles::resolve(packages));
1529   objArrayHandle packages_h(THREAD, packages_oop);
1530   int num_packages = (packages_h == NULL ? 0 : packages_h->length());
1531 
1532   char** pkgs = NULL;
1533   if (num_packages > 0) {
1534     pkgs = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char*, num_packages);
1535     for (int x = 0; x < num_packages; x++) {
1536       oop pkg_str = packages_h->obj_at(x);
1537       if (pkg_str == NULL || !pkg_str->is_a(SystemDictionary::String_klass())) {
1538         THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),




1487 WB_END
1488 
1489 WB_ENTRY(jlong, WB_GetThreadRemainingStackSize(JNIEnv* env, jobject o))
1490   JavaThread* t = JavaThread::current();
1491   return (jlong) t->stack_available(os::current_stack_pointer()) - (jlong)JavaThread::stack_shadow_zone_size();
1492 WB_END
1493 
1494 
1495 int WhiteBox::array_bytes_to_length(size_t bytes) {
1496   return Array<u1>::bytes_to_length(bytes);
1497 }
1498 
1499 WB_ENTRY(jlong, WB_AllocateMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong size))
1500   if (size < 0) {
1501     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
1502         err_msg("WB_AllocateMetaspace: size is negative: " JLONG_FORMAT, size));
1503   }
1504 
1505   oop class_loader_oop = JNIHandles::resolve(class_loader);
1506   ClassLoaderData* cld = class_loader_oop != NULL
1507       ? java_lang_ClassLoader::loader_data_acquire(class_loader_oop)
1508       : ClassLoaderData::the_null_class_loader_data();
1509 
1510   void* metadata = MetadataFactory::new_array<u1>(cld, WhiteBox::array_bytes_to_length((size_t)size), thread);
1511 
1512   return (jlong)(uintptr_t)metadata;
1513 WB_END
1514 
1515 WB_ENTRY(void, WB_FreeMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong addr, jlong size))
1516   oop class_loader_oop = JNIHandles::resolve(class_loader);
1517   ClassLoaderData* cld = class_loader_oop != NULL
1518       ? java_lang_ClassLoader::loader_data_acquire(class_loader_oop)
1519       : ClassLoaderData::the_null_class_loader_data();
1520 
1521   MetadataFactory::free_array(cld, (Array<u1>*)(uintptr_t)addr);
1522 WB_END
1523 
1524 WB_ENTRY(void, WB_DefineModule(JNIEnv* env, jobject o, jobject module, jboolean is_open,
1525                                 jstring version, jstring location, jobjectArray packages))
1526   ResourceMark rm(THREAD);
1527 
1528   objArrayOop packages_oop = objArrayOop(JNIHandles::resolve(packages));
1529   objArrayHandle packages_h(THREAD, packages_oop);
1530   int num_packages = (packages_h == NULL ? 0 : packages_h->length());
1531 
1532   char** pkgs = NULL;
1533   if (num_packages > 0) {
1534     pkgs = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char*, num_packages);
1535     for (int x = 0; x < num_packages; x++) {
1536       oop pkg_str = packages_h->obj_at(x);
1537       if (pkg_str == NULL || !pkg_str->is_a(SystemDictionary::String_klass())) {
1538         THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),


< prev index next >