src/share/native/java/lang/Throwable.c
author darcy
Thu Apr 21 15:55:59 2011 -0700 (13 months ago)
changeset 4116 a5bb55c7cfde
parent 236200cd9dc3c2b5
permissions -rw-r--r--
6998871: Support making the Throwable.stackTrace field immutable
Reviewed-by: dholmes, mchung, forax
        1 /*
        2  * Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved.
        3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
        4  *
        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
        7  * published by the Free Software Foundation.  Oracle designates this
        8  * particular file as subject to the "Classpath" exception as provided
        9  * by Oracle in the LICENSE file that accompanied this code.
       10  *
       11  * This code is distributed in the hope that it will be useful, but WITHOUT
       12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       14  * version 2 for more details (a copy is included in the LICENSE file that
       15  * accompanied this code).
       16  *
       17  * You should have received a copy of the GNU General Public License version
       18  * 2 along with this work; if not, write to the Free Software Foundation,
       19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       20  *
       21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       22  * or visit www.oracle.com if you need additional information or have any
       23  * questions.
       24  */
       25 
       26 /*
       27  *      Implementation of class Throwable
       28  *
       29  *      former classruntime.c, Wed Jun 26 18:43:20 1991
       30  */
       31 
       32 #include <stdio.h>
       33 #include <signal.h>
       34 
       35 #include "jni.h"
       36 #include "jvm.h"
       37 
       38 #include "java_lang_Throwable.h"
       39 
       40 /*
       41  * Fill in the current stack trace in this exception.  This is
       42  * usually called automatically when the exception is created but it
       43  * may also be called explicitly by the user.  This routine returns
       44  * `this' so you can write 'throw e.fillInStackTrace();'
       45  */
       46 JNIEXPORT jobject JNICALL
       47 Java_java_lang_Throwable_fillInStackTrace(JNIEnv *env, jobject throwable, int dummy)
       48 {
       49     JVM_FillInStackTrace(env, throwable);
       50     return throwable;
       51 }
       52 
       53 JNIEXPORT jint JNICALL
       54 Java_java_lang_Throwable_getStackTraceDepth(JNIEnv *env, jobject throwable)
       55 {
       56     return JVM_GetStackTraceDepth(env, throwable);
       57 }
       58 
       59 JNIEXPORT jobject JNICALL
       60 Java_java_lang_Throwable_getStackTraceElement(JNIEnv *env,
       61                                               jobject throwable, jint index)
       62 {
       63     return JVM_GetStackTraceElement(env, throwable, index);
       64 }