--- old/src/os_cpu/bsd_x86/vm/thread_bsd_x86.cpp 2013-06-05 10:55:35.000000000 +0200 +++ new/src/os_cpu/bsd_x86/vm/thread_bsd_x86.cpp 2013-06-05 10:55:35.000000000 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 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 @@ -30,10 +30,16 @@ // currently interrupted by SIGPROF bool JavaThread::pd_get_top_frame_for_signal_handler(frame* fr_addr, void* ucontext, bool isInJava) { - assert(Thread::current() == this, "caller must be current thread"); - assert(this->is_Java_thread(), "must be JavaThread"); + return pd_get_top_frame(fr_addr, ucontext, isInJava); +} +bool JavaThread::pd_get_top_frame_for_profiling(frame* fr_addr, void* ucontext, bool isInJava) { + return pd_get_top_frame(fr_addr, ucontext, isInJava); +} + +bool JavaThread::pd_get_top_frame(frame* fr_addr, void* ucontext, bool isInJava) { + assert(this->is_Java_thread(), "must be JavaThread"); JavaThread* jt = (JavaThread *)this; // If we have a last_Java_frame, then we should use it even if