Merge

Tue, 12 Jul 2011 16:32:25 -0700

author
jcoomes
date
Tue, 12 Jul 2011 16:32:25 -0700
changeset 3000
0defeba52583
parent 2992
b16582d6c7db
parent 2999
b0b8491925fe
child 3003
1f4f4ae84625
child 3025
41e6ee74f879

Merge

     1.1 --- a/src/os/linux/vm/os_linux.cpp	Thu Jul 07 10:51:07 2011 -0700
     1.2 +++ b/src/os/linux/vm/os_linux.cpp	Tue Jul 12 16:32:25 2011 -0700
     1.3 @@ -169,7 +169,35 @@
     1.4  /* Used to protect dlsym() calls */
     1.5  static pthread_mutex_t dl_mutex;
     1.6  
     1.7 -////////////////////////////////////////////////////////////////////////////////
     1.8 +#ifdef JAVASE_EMBEDDED
     1.9 +class MemNotifyThread: public Thread {
    1.10 +  friend class VMStructs;
    1.11 + public:
    1.12 +  virtual void run();
    1.13 +
    1.14 + private:
    1.15 +  static MemNotifyThread* _memnotify_thread;
    1.16 +  int _fd;
    1.17 +
    1.18 + public:
    1.19 +
    1.20 +  // Constructor
    1.21 +  MemNotifyThread(int fd);
    1.22 +
    1.23 +  // Tester
    1.24 +  bool is_memnotify_thread() const { return true; }
    1.25 +
    1.26 +  // Printing
    1.27 +  char* name() const { return (char*)"Linux MemNotify Thread"; }
    1.28 +
    1.29 +  // Returns the single instance of the MemNotifyThread
    1.30 +  static MemNotifyThread* memnotify_thread() { return _memnotify_thread; }
    1.31 +
    1.32 +  // Create and start the single instance of MemNotifyThread
    1.33 +  static void start();
    1.34 +};
    1.35 +#endif // JAVASE_EMBEDDED
    1.36 +
    1.37  // utility functions
    1.38  
    1.39  static int SR_initialize();
    1.40 @@ -2085,6 +2113,14 @@
    1.41    st->cr();
    1.42  }
    1.43  
    1.44 +void os::pd_print_cpu_info(outputStream* st) {
    1.45 +  st->print("\n/proc/cpuinfo:\n");
    1.46 +  if (!_print_ascii_file("/proc/cpuinfo", st)) {
    1.47 +    st->print("  <Not Available>");
    1.48 +  }
    1.49 +  st->cr();
    1.50 +}
    1.51 +
    1.52  void os::print_memory_info(outputStream* st) {
    1.53  
    1.54    st->print("Memory:");
    1.55 @@ -4237,7 +4273,16 @@
    1.56  }
    1.57  
    1.58  // this is called at the end of vm_initialization
    1.59 -void os::init_3(void) { }
    1.60 +void os::init_3(void)
    1.61 +{
    1.62 +#ifdef JAVASE_EMBEDDED
    1.63 +  // Start the MemNotifyThread
    1.64 +  if (LowMemoryProtection) {
    1.65 +    MemNotifyThread::start();
    1.66 +  }
    1.67 +  return;
    1.68 +#endif
    1.69 +}
    1.70  
    1.71  // Mark the polling page as unreadable
    1.72  void os::make_polling_page_unreadable(void) {
    1.73 @@ -5360,3 +5405,78 @@
    1.74      return true;
    1.75  }
    1.76  
    1.77 +
    1.78 +#ifdef JAVASE_EMBEDDED
    1.79 +//
    1.80 +// A thread to watch the '/dev/mem_notify' device, which will tell us when the OS is running low on memory.
    1.81 +//
    1.82 +MemNotifyThread* MemNotifyThread::_memnotify_thread = NULL;
    1.83 +
    1.84 +// ctor
    1.85 +//
    1.86 +MemNotifyThread::MemNotifyThread(int fd): Thread() {
    1.87 +  assert(memnotify_thread() == NULL, "we can only allocate one MemNotifyThread");
    1.88 +  _fd = fd;
    1.89 +
    1.90 +  if (os::create_thread(this, os::os_thread)) {
    1.91 +    _memnotify_thread = this;
    1.92 +    os::set_priority(this, NearMaxPriority);
    1.93 +    os::start_thread(this);
    1.94 +  }
    1.95 +}
    1.96 +
    1.97 +// Where all the work gets done
    1.98 +//
    1.99 +void MemNotifyThread::run() {
   1.100 +  assert(this == memnotify_thread(), "expected the singleton MemNotifyThread");
   1.101 +
   1.102 +  // Set up the select arguments
   1.103 +  fd_set rfds;
   1.104 +  if (_fd != -1) {
   1.105 +    FD_ZERO(&rfds);
   1.106 +    FD_SET(_fd, &rfds);
   1.107 +  }
   1.108 +
   1.109 +  // Now wait for the mem_notify device to wake up
   1.110 +  while (1) {
   1.111 +    // Wait for the mem_notify device to signal us..
   1.112 +    int rc = select(_fd+1, _fd != -1 ? &rfds : NULL, NULL, NULL, NULL);
   1.113 +    if (rc == -1) {
   1.114 +      perror("select!\n");
   1.115 +      break;
   1.116 +    } else if (rc) {
   1.117 +      //ssize_t free_before = os::available_memory();
   1.118 +      //tty->print ("Notified: Free: %dK \n",os::available_memory()/1024);
   1.119 +
   1.120 +      // The kernel is telling us there is not much memory left...
   1.121 +      // try to do something about that
   1.122 +
   1.123 +      // If we are not already in a GC, try one.
   1.124 +      if (!Universe::heap()->is_gc_active()) {
   1.125 +        Universe::heap()->collect(GCCause::_allocation_failure);
   1.126 +
   1.127 +        //ssize_t free_after = os::available_memory();
   1.128 +        //tty->print ("Post-Notify: Free: %dK\n",free_after/1024);
   1.129 +        //tty->print ("GC freed: %dK\n", (free_after - free_before)/1024);
   1.130 +      }
   1.131 +      // We might want to do something like the following if we find the GC's are not helping...
   1.132 +      // Universe::heap()->size_policy()->set_gc_time_limit_exceeded(true);
   1.133 +    }
   1.134 +  }
   1.135 +}
   1.136 +
   1.137 +//
   1.138 +// See if the /dev/mem_notify device exists, and if so, start a thread to monitor it.
   1.139 +//
   1.140 +void MemNotifyThread::start() {
   1.141 +  int    fd;
   1.142 +  fd = open ("/dev/mem_notify", O_RDONLY, 0);
   1.143 +  if (fd < 0) {
   1.144 +      return;
   1.145 +  }
   1.146 +
   1.147 +  if (memnotify_thread() == NULL) {
   1.148 +    new MemNotifyThread(fd);
   1.149 +  }
   1.150 +}
   1.151 +#endif // JAVASE_EMBEDDED
     2.1 --- a/src/os/solaris/vm/os_solaris.cpp	Thu Jul 07 10:51:07 2011 -0700
     2.2 +++ b/src/os/solaris/vm/os_solaris.cpp	Tue Jul 12 16:32:25 2011 -0700
     2.3 @@ -2317,6 +2317,10 @@
     2.4    return status;
     2.5  }
     2.6  
     2.7 +void os::pd_print_cpu_info(outputStream* st) {
     2.8 +  // Nothing to do for now.
     2.9 +}
    2.10 +
    2.11  void os::print_memory_info(outputStream* st) {
    2.12    st->print("Memory:");
    2.13    st->print(" %dk page", os::vm_page_size()>>10);
     3.1 --- a/src/os/windows/vm/os_windows.cpp	Thu Jul 07 10:51:07 2011 -0700
     3.2 +++ b/src/os/windows/vm/os_windows.cpp	Tue Jul 12 16:32:25 2011 -0700
     3.3 @@ -1720,6 +1720,10 @@
     3.4    st->cr();
     3.5  }
     3.6  
     3.7 +void os::pd_print_cpu_info(outputStream* st) {
     3.8 +  // Nothing to do for now.
     3.9 +}
    3.10 +
    3.11  void os::print_memory_info(outputStream* st) {
    3.12    st->print("Memory:");
    3.13    st->print(" %dk page", os::vm_page_size()>>10);
     4.1 --- a/src/os_cpu/linux_x86/vm/assembler_linux_x86.cpp	Thu Jul 07 10:51:07 2011 -0700
     4.2 +++ b/src/os_cpu/linux_x86/vm/assembler_linux_x86.cpp	Tue Jul 12 16:32:25 2011 -0700
     4.3 @@ -33,6 +33,28 @@
     4.4    call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
     4.5  }
     4.6  
     4.7 +#ifdef MINIMIZE_RAM_USAGE
     4.8 +
     4.9 +void MacroAssembler::get_thread(Register thread) {
    4.10 +  // call pthread_getspecific
    4.11 +  // void * pthread_getspecific(pthread_key_t key);
    4.12 +  if (thread != rax) push(rax);
    4.13 +  push(rcx);
    4.14 +  push(rdx);
    4.15 +
    4.16 +  push(ThreadLocalStorage::thread_index());
    4.17 +  call(RuntimeAddress(CAST_FROM_FN_PTR(address, pthread_getspecific)));
    4.18 +  increment(rsp, wordSize);
    4.19 +
    4.20 +  pop(rdx);
    4.21 +  pop(rcx);
    4.22 +  if (thread != rax) {
    4.23 +    mov(thread, rax);
    4.24 +    pop(rax);
    4.25 +  }
    4.26 +}
    4.27 +
    4.28 +#else
    4.29  void MacroAssembler::get_thread(Register thread) {
    4.30    movl(thread, rsp);
    4.31    shrl(thread, PAGE_SHIFT);
    4.32 @@ -43,6 +65,7 @@
    4.33  
    4.34    movptr(thread, tls);
    4.35  }
    4.36 +#endif // MINIMIZE_RAM_USAGE
    4.37  #else
    4.38  void MacroAssembler::int3() {
    4.39    call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
     5.1 --- a/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp	Thu Jul 07 10:51:07 2011 -0700
     5.2 +++ b/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp	Tue Jul 12 16:32:25 2011 -0700
     5.3 @@ -52,25 +52,20 @@
     5.4  // MADV_DONTNEED on Linux keeps the virtual memory mapping, but zaps the
     5.5  // physical memory page (i.e. similar to MADV_FREE on Solaris).
     5.6  
     5.7 -#ifndef AMD64
     5.8 +#if !defined(AMD64) && !defined(MINIMIZE_RAM_USAGE)
     5.9  Thread* ThreadLocalStorage::_sp_map[1UL << (SP_BITLENGTH - PAGE_SHIFT)];
    5.10 -#endif // !AMD64
    5.11  
    5.12  void ThreadLocalStorage::generate_code_for_get_thread() {
    5.13      // nothing we can do here for user-level thread
    5.14  }
    5.15  
    5.16  void ThreadLocalStorage::pd_init() {
    5.17 -#ifndef AMD64
    5.18    assert(align_size_down(os::vm_page_size(), PAGE_SIZE) == os::vm_page_size(),
    5.19           "page size must be multiple of PAGE_SIZE");
    5.20 -#endif // !AMD64
    5.21  }
    5.22  
    5.23  void ThreadLocalStorage::pd_set_thread(Thread* thread) {
    5.24    os::thread_local_storage_at_put(ThreadLocalStorage::thread_index(), thread);
    5.25 -
    5.26 -#ifndef AMD64
    5.27    address stack_top = os::current_stack_base();
    5.28    size_t stack_size = os::current_stack_size();
    5.29  
    5.30 @@ -88,5 +83,17 @@
    5.31             "thread exited without detaching from VM??");
    5.32      _sp_map[(uintptr_t)p >> PAGE_SHIFT] = thread;
    5.33    }
    5.34 -#endif // !AMD64
    5.35  }
    5.36 +#else
    5.37 +
    5.38 +void ThreadLocalStorage::generate_code_for_get_thread() {
    5.39 +    // nothing we can do here for user-level thread
    5.40 +}
    5.41 +
    5.42 +void ThreadLocalStorage::pd_init() {
    5.43 +}
    5.44 +
    5.45 +void ThreadLocalStorage::pd_set_thread(Thread* thread) {
    5.46 +  os::thread_local_storage_at_put(ThreadLocalStorage::thread_index(), thread);
    5.47 +}
    5.48 +#endif // !AMD64 && !MINIMIZE_RAM_USAGE
     6.1 --- a/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp	Thu Jul 07 10:51:07 2011 -0700
     6.2 +++ b/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp	Tue Jul 12 16:32:25 2011 -0700
     6.3 @@ -27,28 +27,32 @@
     6.4  
     6.5    // Processor dependent parts of ThreadLocalStorage
     6.6  
     6.7 -#ifndef AMD64
     6.8 +#if !defined(AMD64) && !defined(MINIMIZE_RAM_USAGE)
     6.9 +
    6.10    // map stack pointer to thread pointer - see notes in threadLS_linux_x86.cpp
    6.11    #define SP_BITLENGTH  32
    6.12    #define PAGE_SHIFT    12
    6.13    #define PAGE_SIZE     (1UL << PAGE_SHIFT)
    6.14    static Thread* _sp_map[1UL << (SP_BITLENGTH - PAGE_SHIFT)];
    6.15 -#endif // !AMD64
    6.16  
    6.17  public:
    6.18  
    6.19 -#ifndef AMD64
    6.20    static Thread** sp_map_addr() { return _sp_map; }
    6.21 -#endif // !AMD64
    6.22  
    6.23    static Thread* thread() {
    6.24 -#ifdef AMD64
    6.25 -    return (Thread*) os::thread_local_storage_at(thread_index());
    6.26 -#else
    6.27      uintptr_t sp;
    6.28      __asm__ volatile ("movl %%esp, %0" : "=r" (sp));
    6.29      return _sp_map[sp >> PAGE_SHIFT];
    6.30 -#endif // AMD64
    6.31    }
    6.32  
    6.33 +#else
    6.34 +
    6.35 +public:
    6.36 +
    6.37 +   static Thread* thread() {
    6.38 +     return (Thread*) os::thread_local_storage_at(thread_index());
    6.39 +   }
    6.40 +
    6.41 +#endif // AMD64 || MINIMIZE_RAM_USAGE
    6.42 +
    6.43  #endif // OS_CPU_LINUX_X86_VM_THREADLS_LINUX_X86_HPP
     7.1 --- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Thu Jul 07 10:51:07 2011 -0700
     7.2 +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Tue Jul 12 16:32:25 2011 -0700
     7.3 @@ -2716,6 +2716,10 @@
     7.4    bitMapLock()->unlock();
     7.5    releaseFreelistLocks();
     7.6  
     7.7 +  if (!CleanChunkPoolAsync) {
     7.8 +    Chunk::clean_chunk_pool();
     7.9 +  }
    7.10 +
    7.11    _between_prologue_and_epilogue = false;  // ready for next cycle
    7.12  }
    7.13  
     8.1 --- a/src/share/vm/memory/defNewGeneration.cpp	Thu Jul 07 10:51:07 2011 -0700
     8.2 +++ b/src/share/vm/memory/defNewGeneration.cpp	Tue Jul 12 16:32:25 2011 -0700
     8.3 @@ -905,6 +905,10 @@
     8.4      to()->check_mangled_unused_area_complete();
     8.5    }
     8.6  
     8.7 +  if (!CleanChunkPoolAsync) {
     8.8 +    Chunk::clean_chunk_pool();
     8.9 +  }
    8.10 +
    8.11    // update the generation and space performance counters
    8.12    update_counters();
    8.13    gch->collector_policy()->counters()->update_counters();
     9.1 --- a/src/share/vm/memory/genCollectedHeap.cpp	Thu Jul 07 10:51:07 2011 -0700
     9.2 +++ b/src/share/vm/memory/genCollectedHeap.cpp	Tue Jul 12 16:32:25 2011 -0700
     9.3 @@ -1384,6 +1384,10 @@
     9.4    generation_iterate(&blk, false);  // not old-to-young.
     9.5    perm_gen()->gc_epilogue(full);
     9.6  
     9.7 +  if (!CleanChunkPoolAsync) {
     9.8 +    Chunk::clean_chunk_pool();
     9.9 +  }
    9.10 +
    9.11    always_do_update_barrier = UseConcMarkSweepGC;
    9.12  };
    9.13  
    10.1 --- a/src/share/vm/opto/lcm.cpp	Thu Jul 07 10:51:07 2011 -0700
    10.2 +++ b/src/share/vm/opto/lcm.cpp	Tue Jul 12 16:32:25 2011 -0700
    10.3 @@ -45,6 +45,9 @@
    10.4  #ifdef TARGET_ARCH_MODEL_arm
    10.5  # include "adfiles/ad_arm.hpp"
    10.6  #endif
    10.7 +#ifdef TARGET_ARCH_MODEL_ppc
    10.8 +# include "adfiles/ad_ppc.hpp"
    10.9 +#endif
   10.10  
   10.11  // Optimization - Graph Style
   10.12  
    11.1 --- a/src/share/vm/opto/matcher.cpp	Thu Jul 07 10:51:07 2011 -0700
    11.2 +++ b/src/share/vm/opto/matcher.cpp	Tue Jul 12 16:32:25 2011 -0700
    11.3 @@ -52,6 +52,9 @@
    11.4  #ifdef TARGET_ARCH_MODEL_arm
    11.5  # include "adfiles/ad_arm.hpp"
    11.6  #endif
    11.7 +#ifdef TARGET_ARCH_MODEL_ppc
    11.8 +# include "adfiles/ad_ppc.hpp"
    11.9 +#endif
   11.10  
   11.11  OptoReg::Name OptoReg::c_frame_pointer;
   11.12  
    12.1 --- a/src/share/vm/prims/jni.cpp	Thu Jul 07 10:51:07 2011 -0700
    12.2 +++ b/src/share/vm/prims/jni.cpp	Tue Jul 12 16:32:25 2011 -0700
    12.3 @@ -70,15 +70,6 @@
    12.4  #include "utilities/dtrace.hpp"
    12.5  #include "utilities/events.hpp"
    12.6  #include "utilities/histogram.hpp"
    12.7 -#ifdef TARGET_ARCH_x86
    12.8 -# include "jniTypes_x86.hpp"
    12.9 -#endif
   12.10 -#ifdef TARGET_ARCH_sparc
   12.11 -# include "jniTypes_sparc.hpp"
   12.12 -#endif
   12.13 -#ifdef TARGET_ARCH_zero
   12.14 -# include "jniTypes_zero.hpp"
   12.15 -#endif
   12.16  #ifdef TARGET_OS_FAMILY_linux
   12.17  # include "os_linux.inline.hpp"
   12.18  # include "thread_linux.inline.hpp"
    13.1 --- a/src/share/vm/runtime/arguments.cpp	Thu Jul 07 10:51:07 2011 -0700
    13.2 +++ b/src/share/vm/runtime/arguments.cpp	Tue Jul 12 16:32:25 2011 -0700
    13.3 @@ -37,15 +37,6 @@
    13.4  #include "services/management.hpp"
    13.5  #include "utilities/defaultStream.hpp"
    13.6  #include "utilities/taskqueue.hpp"
    13.7 -#ifdef TARGET_ARCH_x86
    13.8 -# include "vm_version_x86.hpp"
    13.9 -#endif
   13.10 -#ifdef TARGET_ARCH_sparc
   13.11 -# include "vm_version_sparc.hpp"
   13.12 -#endif
   13.13 -#ifdef TARGET_ARCH_zero
   13.14 -# include "vm_version_zero.hpp"
   13.15 -#endif
   13.16  #ifdef TARGET_OS_FAMILY_linux
   13.17  # include "os_linux.inline.hpp"
   13.18  #endif
   13.19 @@ -251,6 +242,11 @@
   13.20    { "UseParallelOldGCDensePrefix",
   13.21                             JDK_Version::jdk_update(6,27), JDK_Version::jdk(8) },
   13.22    { "AllowTransitionalJSR292",       JDK_Version::jdk(7), JDK_Version::jdk(8) },
   13.23 +  { "UseCompressedStrings",          JDK_Version::jdk(7), JDK_Version::jdk(8) },
   13.24 +#ifdef PRODUCT
   13.25 +  { "DesiredMethodLimit",
   13.26 +                           JDK_Version::jdk_update(7, 2), JDK_Version::jdk(8) },
   13.27 +#endif // PRODUCT
   13.28    { NULL, JDK_Version(0), JDK_Version(0) }
   13.29  };
   13.30  
   13.31 @@ -2912,6 +2908,18 @@
   13.32    }
   13.33  }
   13.34  
   13.35 +// Disable options not supported in this release, with a warning if they
   13.36 +// were explicitly requested on the command-line
   13.37 +#define UNSUPPORTED_OPTION(opt, description)                    \
   13.38 +do {                                                            \
   13.39 +  if (opt) {                                                    \
   13.40 +    if (FLAG_IS_CMDLINE(opt)) {                                 \
   13.41 +      warning(description " is disabled in this release.");     \
   13.42 +    }                                                           \
   13.43 +    FLAG_SET_DEFAULT(opt, false);                               \
   13.44 +  }                                                             \
   13.45 +} while(0)
   13.46 +
   13.47  // Parse entry point called from JNI_CreateJavaVM
   13.48  
   13.49  jint Arguments::parse(const JavaVMInitArgs* args) {
   13.50 @@ -3009,6 +3017,13 @@
   13.51      return result;
   13.52    }
   13.53  
   13.54 +#ifdef JAVASE_EMBEDDED
   13.55 +  #ifdef PPC
   13.56 +    UNSUPPORTED_OPTION(EnableInvokeDynamic, "Invoke dynamic");
   13.57 +  #endif
   13.58 +  UNSUPPORTED_OPTION(UseG1GC, "G1 GC");
   13.59 +#endif
   13.60 +
   13.61  #ifndef PRODUCT
   13.62    if (TraceBytecodesAt != 0) {
   13.63      TraceBytecodes = true;
    14.1 --- a/src/share/vm/runtime/atomic.cpp	Thu Jul 07 10:51:07 2011 -0700
    14.2 +++ b/src/share/vm/runtime/atomic.cpp	Tue Jul 12 16:32:25 2011 -0700
    14.3 @@ -51,6 +51,12 @@
    14.4  #ifdef TARGET_OS_ARCH_windows_x86
    14.5  # include "atomic_windows_x86.inline.hpp"
    14.6  #endif
    14.7 +#ifdef TARGET_OS_ARCH_linux_arm
    14.8 +# include "atomic_linux_arm.inline.hpp"
    14.9 +#endif
   14.10 +#ifdef TARGET_OS_ARCH_linux_ppc
   14.11 +# include "atomic_linux_ppc.inline.hpp"
   14.12 +#endif
   14.13  
   14.14  jbyte Atomic::cmpxchg(jbyte exchange_value, volatile jbyte* dest, jbyte compare_value) {
   14.15    assert(sizeof(jbyte) == 1, "assumption.");
    15.1 --- a/src/share/vm/runtime/globals.hpp	Thu Jul 07 10:51:07 2011 -0700
    15.2 +++ b/src/share/vm/runtime/globals.hpp	Tue Jul 12 16:32:25 2011 -0700
    15.3 @@ -343,6 +343,12 @@
    15.4  #define falseInTiered true
    15.5  #endif
    15.6  
    15.7 +#ifdef JAVASE_EMBEDDED
    15.8 +#define falseInEmbedded false
    15.9 +#else
   15.10 +#define falseInEmbedded true
   15.11 +#endif
   15.12 +
   15.13  // develop flags are settable / visible only during development and are constant in the PRODUCT version
   15.14  // product flags are always settable / visible
   15.15  // notproduct flags are settable / visible only during development and are not declared in the PRODUCT version
   15.16 @@ -438,6 +444,9 @@
   15.17    product(bool, UsePPCLWSYNC, true,                                         \
   15.18            "Use lwsync instruction if true, else use slower sync")           \
   15.19                                                                              \
   15.20 +  develop(bool, CleanChunkPoolAsync, falseInEmbedded,                       \
   15.21 +          "Whether to clean the chunk pool asynchronously")                 \
   15.22 +                                                                            \
   15.23    /* Temporary: See 6948537 */                                             \
   15.24    experimental(bool, UseMemSetInBOT, true,                                  \
   15.25            "(Unstable) uses memset in BOT updates in GC code")               \
   15.26 @@ -3611,13 +3620,9 @@
   15.27                                                                              \
   15.28    /* flags for performance data collection */                               \
   15.29                                                                              \
   15.30 -  NOT_EMBEDDED(product(bool, UsePerfData, true,                             \
   15.31 +  product(bool, UsePerfData, falseInEmbedded,                               \
   15.32            "Flag to disable jvmstat instrumentation for performance testing" \
   15.33 -          "and problem isolation purposes."))                               \
   15.34 -                                                                            \
   15.35 -  EMBEDDED_ONLY(product(bool, UsePerfData, false,                           \
   15.36 -          "Flag to disable jvmstat instrumentation for performance testing" \
   15.37 -          "and problem isolation purposes."))                               \
   15.38 +          "and problem isolation purposes.")                                \
   15.39                                                                              \
   15.40    product(bool, PerfDataSaveToFile, false,                                  \
   15.41            "Save PerfData memory to hsperfdata_<pid> file on exit")          \
    16.1 --- a/src/share/vm/runtime/os.cpp	Thu Jul 07 10:51:07 2011 -0700
    16.2 +++ b/src/share/vm/runtime/os.cpp	Tue Jul 12 16:32:25 2011 -0700
    16.3 @@ -761,6 +761,7 @@
    16.4    // st->print("(active %d)", os::active_processor_count());
    16.5    st->print(" %s", VM_Version::cpu_features());
    16.6    st->cr();
    16.7 +  pd_print_cpu_info(st);
    16.8  }
    16.9  
   16.10  void os::print_date_and_time(outputStream *st) {
    17.1 --- a/src/share/vm/runtime/os.hpp	Thu Jul 07 10:51:07 2011 -0700
    17.2 +++ b/src/share/vm/runtime/os.hpp	Tue Jul 12 16:32:25 2011 -0700
    17.3 @@ -480,6 +480,7 @@
    17.4    // Output format may be different on different platforms.
    17.5    static void print_os_info(outputStream* st);
    17.6    static void print_cpu_info(outputStream* st);
    17.7 +  static void pd_print_cpu_info(outputStream* st);
    17.8    static void print_memory_info(outputStream* st);
    17.9    static void print_dll_info(outputStream* st);
   17.10    static void print_environment_variables(outputStream* st, const char** env_list, char* buffer, int len);
    18.1 --- a/src/share/vm/runtime/thread.cpp	Thu Jul 07 10:51:07 2011 -0700
    18.2 +++ b/src/share/vm/runtime/thread.cpp	Tue Jul 12 16:32:25 2011 -0700
    18.3 @@ -3347,7 +3347,9 @@
    18.4    // Notify JVMTI agents that VM initialization is complete - nop if no agents.
    18.5    JvmtiExport::post_vm_initialized();
    18.6  
    18.7 -  Chunk::start_chunk_pool_cleaner_task();
    18.8 +  if (CleanChunkPoolAsync) {
    18.9 +    Chunk::start_chunk_pool_cleaner_task();
   18.10 +  }
   18.11  
   18.12    // initialize compiler(s)
   18.13    CompileBroker::compilation_init();

mercurial