| // natVMThrowable.cc - Native part of VMThrowable class. | |
| /* Copyright (C) 2003, 2006 Free Software Foundation | |
| This file is part of libgcj. | |
| This software is copyrighted work licensed under the terms of the | |
| Libgcj License. Please consult the file "LIBGCJ_LICENSE" for | |
| details. */ | |
| #include <config.h> | |
| #include <stdlib.h> | |
| #include <gcj/cni.h> | |
| #include <jvm.h> | |
| #include <java-stack.h> | |
| #include <java/lang/Throwable.h> | |
| #include <java/lang/VMThrowable.h> | |
| using namespace gnu::gcj; | |
| java::lang::VMThrowable * | |
| java::lang::VMThrowable::fillInStackTrace (java::lang::Throwable *) | |
| { | |
| using namespace java::lang; | |
| // Don't trace stack during initialization of the runtime. | |
| if (! gcj::runtimeInitialized) | |
| return NULL; | |
| _Jv_StackTrace *trace = _Jv_StackTrace::GetStackTrace (); | |
| VMThrowable *vmthrowable = new VMThrowable (); | |
| vmthrowable->data = (RawDataManaged *) trace; | |
| return vmthrowable; | |
| } | |
| JArray< ::java::lang::StackTraceElement *> * | |
| java::lang::VMThrowable::getStackTrace (java::lang::Throwable *throwable) | |
| { | |
| _Jv_StackTrace *trace = reinterpret_cast <_Jv_StackTrace *> (data); | |
| return _Jv_StackTrace::GetStackTraceElements (trace, throwable); | |
| } |