hotspot/src/os_cpu/solaris_sparc/vm/thread_solaris_sparc.cpp
changeset 18025 b7bcf7497f93
parent 14583 d70ee55535f4
child 37439 e8970711113b
equal deleted inserted replaced
18024:f9e300086063 18025:b7bcf7497f93
     1 /*
     1 /*
     2  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    34 //
    34 //
    35 bool JavaThread::pd_get_top_frame_for_signal_handler(frame* fr_addr,
    35 bool JavaThread::pd_get_top_frame_for_signal_handler(frame* fr_addr,
    36   void* ucontext, bool isInJava) {
    36   void* ucontext, bool isInJava) {
    37 
    37 
    38   assert(Thread::current() == this, "caller must be current thread");
    38   assert(Thread::current() == this, "caller must be current thread");
       
    39   return pd_get_top_frame(fr_addr, ucontext, isInJava, true);
       
    40 }
       
    41 
       
    42 bool JavaThread::pd_get_top_frame_for_profiling(frame* fr_addr, void* ucontext, bool isInJava) {
       
    43   // get ucontext somehow
       
    44   return pd_get_top_frame(fr_addr, ucontext, isInJava, false);
       
    45 }
       
    46 
       
    47 bool JavaThread::pd_get_top_frame(frame* fr_addr,
       
    48   void* ucontext, bool isInJava, bool makeWalkable) {
    39   assert(this->is_Java_thread(), "must be JavaThread");
    49   assert(this->is_Java_thread(), "must be JavaThread");
    40 
    50 
    41   JavaThread* jt = (JavaThread *)this;
    51   JavaThread* jt = (JavaThread *)this;
    42 
    52 
    43   if (!isInJava) {
    53   if (!isInJava && makeWalkable) {
    44     // make_walkable flushes register windows and grabs last_Java_pc
    54     // make_walkable flushes register windows and grabs last_Java_pc
    45     // which can not be done if the ucontext sp matches last_Java_sp
    55     // which can not be done if the ucontext sp matches last_Java_sp
    46     // stack walking utilities assume last_Java_pc set if marked flushed
    56     // stack walking utilities assume last_Java_pc set if marked flushed
    47     jt->frame_anchor()->make_walkable(jt);
    57     jt->frame_anchor()->make_walkable(jt);
    48   }
    58   }