1.1 --- a/src/share/vm/runtime/handles.hpp Fri Apr 19 11:08:52 2013 -0700 1.2 +++ b/src/share/vm/runtime/handles.hpp Sun Apr 21 20:41:04 2013 -0700 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -280,10 +280,10 @@ 1.11 // If h has to be preserved, it can be converted to an oop or a local JNI handle 1.12 // across the HandleMark boundary. 1.13 1.14 -// The only special case for HandleMark is when a Thread is created, the first 1.15 -// HandleMark of the Thread is allocated in heap. 1.16 +// The base class of HandleMark should have been StackObj but we also heap allocate 1.17 +// a HandleMark when a thread is created. 1.18 1.19 -class HandleMark : public StackObj { 1.20 +class HandleMark { 1.21 private: 1.22 Thread *_thread; // thread that owns this mark 1.23 HandleArea *_area; // saved handle area 1.24 @@ -293,6 +293,7 @@ 1.25 // Link to previous active HandleMark in thread 1.26 HandleMark* _previous_handle_mark; 1.27 1.28 + void initialize(Thread* thread); // common code for constructors 1.29 void set_previous_handle_mark(HandleMark* mark) { _previous_handle_mark = mark; } 1.30 HandleMark* previous_handle_mark() const { return _previous_handle_mark; } 1.31 1.32 @@ -302,7 +303,6 @@ 1.33 HandleMark(Thread* thread) { initialize(thread); } 1.34 ~HandleMark(); 1.35 1.36 - void initialize(Thread* thread); // common code for constructors 1.37 // Functions used by HandleMarkCleaner 1.38 // called in the constructor of HandleMarkCleaner 1.39 void push();