hotspot/src/share/vm/runtime/handles.hpp
changeset 17026 72b2233861f1
parent 14120 7d298141c258
child 17031 9a576749065b
--- a/hotspot/src/share/vm/runtime/handles.hpp	Thu Apr 18 14:03:37 2013 -0400
+++ b/hotspot/src/share/vm/runtime/handles.hpp	Fri Apr 19 11:08:52 2013 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2013, 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
@@ -280,10 +280,10 @@
 // If h has to be preserved, it can be converted to an oop or a local JNI handle
 // across the HandleMark boundary.
 
-// The base class of HandleMark should have been StackObj but we also heap allocate
-// a HandleMark when a thread is created.
+// The only special case for HandleMark is when a Thread is created, the first
+// HandleMark of the Thread is allocated in heap.
 
-class HandleMark {
+class HandleMark : public StackObj {
  private:
   Thread *_thread;              // thread that owns this mark
   HandleArea *_area;            // saved handle area
@@ -293,7 +293,6 @@
   // Link to previous active HandleMark in thread
   HandleMark* _previous_handle_mark;
 
-  void initialize(Thread* thread);                // common code for constructors
   void set_previous_handle_mark(HandleMark* mark) { _previous_handle_mark = mark; }
   HandleMark* previous_handle_mark() const        { return _previous_handle_mark; }
 
@@ -303,6 +302,7 @@
   HandleMark(Thread* thread)                      { initialize(thread); }
   ~HandleMark();
 
+  void initialize(Thread* thread);                // common code for constructors
   // Functions used by HandleMarkCleaner
   // called in the constructor of HandleMarkCleaner
   void push();