home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / kaffe-0.5p4-src.tgz / tar.out / contrib / kaffe / lib / native / java.lang / Throwable.c < prev    next >
C/C++ Source or Header  |  1996-09-28  |  1KB  |  51 lines

  1. /*
  2.  * java.lang.Throwable.c
  3.  *
  4.  * Copyright (c) 1996 Systems Architecture Research Centre,
  5.  *           City University, London, UK.
  6.  *
  7.  * See the file "license.terms" for information on usage and redistribution
  8.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  9.  *
  10.  * Written by Tim Wilkinson <tim@sarc.city.ac.uk>, February 1996.
  11.  */
  12.  
  13. #include <stdio.h>
  14. #include <assert.h>
  15. #include <native.h>
  16. #include "java.io.stubs/FileDescriptor.h"
  17. #include "java.io.stubs/FileOutputStream.h"
  18. #include "java.io.stubs/PrintStream.h"
  19. #include "java.lang.stubs/Throwable.h"
  20.  
  21. extern object* buildStackTrace(void*);
  22.  
  23. /*
  24.  * Fill in stack trace information - don't know what thought.
  25.  */
  26. struct Hjava_lang_Throwable*
  27. java_lang_Throwable_fillInStackTrace(struct Hjava_lang_Throwable* o)
  28. {
  29.     unhand(o)->backtrace = buildStackTrace(0);
  30.     return (o);
  31. }
  32.  
  33. /*
  34.  * Dump the stack trace to the given stream.
  35.  */
  36. void
  37. java_lang_Throwable_printStackTrace0(struct Hjava_lang_Throwable* o, struct Hjava_io_PrintStream* p)
  38. {
  39.     int i;
  40.     HArrayOfArray* strarray;
  41.  
  42.     strarray = (HArrayOfArray*)unhand(o)->backtrace;
  43.     if (strarray != 0) {
  44.         for (i = 0; i < obj_length(strarray); i++) {
  45.             if (unhand(strarray)->body[i] != 0) {
  46.                 do_execute_java_method(0, (object*)p, "println", "([C)V", 0, 0, unhand(strarray)->body[i]);
  47.             }
  48.         }
  49.     }
  50. }
  51.