< prev index next >

src/hotspot/share/services/management.cpp

Print this page
*** 1,7 ***
  /*
!  * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved.
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License version 2 only, as
   * published by the Free Software Foundation.
--- 1,7 ---
  /*
!  * Copyright (c) 2003, 2026, Oracle and/or its affiliates. All rights reserved.
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License version 2 only, as
   * published by the Free Software Foundation.

*** 36,10 ***
--- 36,11 ---
  #include "oops/klass.hpp"
  #include "oops/klass.inline.hpp"
  #include "oops/objArrayKlass.hpp"
  #include "oops/objArrayOop.inline.hpp"
  #include "oops/oop.inline.hpp"
+ #include "oops/oopCast.inline.hpp"
  #include "oops/oopHandle.inline.hpp"
  #include "oops/typeArrayOop.inline.hpp"
  #include "runtime/flags/jvmFlag.hpp"
  #include "runtime/globals.hpp"
  #include "runtime/handles.inline.hpp"

*** 1441,13 ***
  // Returns a String array of all VM global flag names
  JVM_ENTRY(jobjectArray, jmm_GetVMGlobalNames(JNIEnv *env))
    // last flag entry is always null, so subtract 1
    int nFlags = (int) JVMFlag::numFlags - 1;
    // allocate a temp array
!   objArrayOop r = oopFactory::new_objArray(vmClasses::String_klass(),
!                                            nFlags, CHECK_NULL);
!   objArrayHandle flags_ah(THREAD, r);
    int num_entries = 0;
    for (int i = 0; i < nFlags; i++) {
      JVMFlag* flag = &JVMFlag::flags[i];
      // Exclude develop flags in product builds.
      if (flag->is_constant_in_binary()) {
--- 1442,14 ---
  // Returns a String array of all VM global flag names
  JVM_ENTRY(jobjectArray, jmm_GetVMGlobalNames(JNIEnv *env))
    // last flag entry is always null, so subtract 1
    int nFlags = (int) JVMFlag::numFlags - 1;
    // allocate a temp array
!   refArrayOop r = oopFactory::new_refArray(vmClasses::String_klass(),
!                                            nFlags,
!                                            CHECK_NULL);
+   refArrayHandle flags_ah(THREAD, r);
    int num_entries = 0;
    for (int i = 0; i < nFlags; i++) {
      JVMFlag* flag = &JVMFlag::flags[i];
      // Exclude develop flags in product builds.
      if (flag->is_constant_in_binary()) {

*** 1461,11 ***
      }
    }
  
    if (num_entries < nFlags) {
      // Return array of right length
!     objArrayOop res = oopFactory::new_objArray(vmClasses::String_klass(), num_entries, CHECK_NULL);
      for(int i = 0; i < num_entries; i++) {
        res->obj_at_put(i, flags_ah->obj_at(i));
      }
      return (jobjectArray)JNIHandles::make_local(THREAD, res);
    }
--- 1463,11 ---
      }
    }
  
    if (num_entries < nFlags) {
      // Return array of right length
!     refArrayOop res = oopFactory::new_refArray(vmClasses::String_klass(), num_entries, CHECK_NULL);
      for(int i = 0; i < num_entries; i++) {
        res->obj_at_put(i, flags_ah->obj_at(i));
      }
      return (jobjectArray)JNIHandles::make_local(THREAD, res);
    }

*** 1567,14 ***
  
    ResourceMark rm(THREAD);
  
    if (names != nullptr) {
      // return the requested globals
!     objArrayOop ta = objArrayOop(JNIHandles::resolve_non_null(names));
!     objArrayHandle names_ah(THREAD, ta);
      // Make sure we have a String array
!     Klass* element_klass = ObjArrayKlass::cast(names_ah->klass())->element_klass();
      if (element_klass != vmClasses::String_klass()) {
        THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
                   "Array element type is not String class", 0);
      }
  
--- 1569,14 ---
  
    ResourceMark rm(THREAD);
  
    if (names != nullptr) {
      // return the requested globals
!     refArrayOop ta = oop_cast<refArrayOop>(JNIHandles::resolve_non_null(names));
!     refArrayHandle names_ah(THREAD, ta);
      // Make sure we have a String array
!     Klass* element_klass = RefArrayKlass::cast(names_ah->klass())->element_klass();
      if (element_klass != vmClasses::String_klass()) {
        THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
                   "Array element type is not String class", 0);
      }
  

*** 1994,15 ***
      THROW(vmSymbols::java_lang_NullPointerException());
    }
  
    ResourceMark rm(THREAD);
  
!   objArrayOop ca = objArrayOop(JNIHandles::resolve_non_null(cmds));
!   objArrayHandle cmds_ah(THREAD, ca);
  
    // Make sure we have a String array
!   Klass* element_klass = ObjArrayKlass::cast(cmds_ah->klass())->element_klass();
    if (element_klass != vmClasses::String_klass()) {
      THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
                 "Array element type is not String class");
    }
  
--- 1996,15 ---
      THROW(vmSymbols::java_lang_NullPointerException());
    }
  
    ResourceMark rm(THREAD);
  
!   refArrayOop ca = oop_cast<refArrayOop>(JNIHandles::resolve_non_null(cmds));
!   refArrayHandle cmds_ah(THREAD, ca);
  
    // Make sure we have a String array
!   Klass* element_klass = RefArrayKlass::cast(cmds_ah->klass())->element_klass();
    if (element_klass != vmClasses::String_klass()) {
      THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
                 "Array element type is not String class");
    }
  
< prev index next >