Ignore:
Timestamp:
Apr 27, 2004, 8:39:34 PM (21 years ago)
Author:
bird
Message:

GCC v3.3.3 sources.

Location:
branches/GNU/src/gcc
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/GNU/src/gcc

    • Property svn:ignore
      •  

        old new  
        2626configure.vr
        2727configure.vrs
         28dir.info
        2829Makefile
        29 dir.info
        3030lost+found
        3131update.out
  • branches/GNU/src/gcc/libjava/prims.cc

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.1.1.2
    r1390 r1391  
    5454#include <java/lang/OutOfMemoryError.h>
    5555#include <java/lang/System.h>
     56#include <java/lang/VMThrowable.h>
    5657#include <java/lang/reflect/Modifier.h>
    5758#include <java/io/PrintStream.h>
     
    8687#endif
    8788
    88 // The name of this executable.
    89 static char *_Jv_execName;
    90 
    9189// Stash the argv pointer to benefit native libraries that need it.
    9290const char **_Jv_argv;
    9391int _Jv_argc;
     92
     93// Argument support.
     94int
     95_Jv_GetNbArgs (void)
     96{
     97  // _Jv_argc is 0 if not explicitly initialized.
     98  return _Jv_argc;
     99}
     100
     101const char *
     102_Jv_GetSafeArg (int index)
     103{
     104  if (index >=0 && index < _Jv_GetNbArgs ())
     105    return _Jv_argv[index];
     106  else
     107    return "";
     108}
     109
     110void
     111_Jv_SetArgs (int argc, const char **argv)
     112{
     113  _Jv_argc = argc;
     114  _Jv_argv = argv;
     115}
    94116
    95117#ifdef ENABLE_JVMPI
     
    102124
    103125
     126/* Unblock a signal.  Unless we do this, the signal may only be sent
     127   once.  */
     128static void
     129unblock_signal (int signum)
     130{
     131#ifdef _POSIX_VERSION
     132  sigset_t sigs;
     133
     134  sigemptyset (&sigs);
     135  sigaddset (&sigs, signum);
     136  sigprocmask (SIG_UNBLOCK, &sigs, NULL);
     137#endif
     138}
     139
    104140extern "C" void _Jv_ThrowSignal (jthrowable) __attribute ((noreturn));
    105141
     
    119155SIGNAL_HANDLER (catch_segv)
    120156{
     157  unblock_signal (SIGSEGV);
    121158  MAKE_THROW_FRAME (nullp);
    122159  _Jv_ThrowSignal (nullp);
     
    129166SIGNAL_HANDLER (catch_fpe)
    130167{
     168  unblock_signal (SIGFPE);
    131169#ifdef HANDLE_DIVIDE_OVERFLOW
    132170  HANDLE_DIVIDE_OVERFLOW;
     
    400438  // Unfortunately, we still have to the dynamic test, since there may
    401439  // be cni calls to this routine.
    402   // Nore that on IA64 get_finalizer() returns the starting address of the
     440  // Note that on IA64 get_finalizer() returns the starting address of the
    403441  // function, not a function pointer.  Thus this still works.
    404442  if (klass->vtable->get_finalizer ()
     
    461499  size += count * sizeof (jobject);
    462500
    463   // FIXME: second argument should be "current loader"
    464   jclass klass = _Jv_GetArrayClass (elementClass, 0);
     501  jclass klass = _Jv_GetArrayClass (elementClass,
     502                                    elementClass->getClassLoaderInternal());
    465503
    466504  obj = (jobjectArray) _Jv_AllocArray (size, klass);
     
    661699        _Jv_Utf8Const *name = _Jv_makeUtf8Const (&sig[1], i - 1);
    662700        return _Jv_FindClass (name, loader);
    663 
    664701      }
    665702    case '[':
     
    712749// The primary thread.
    713750static java::lang::Thread *main_thread;
    714 
    715 char *
    716 _Jv_ThisExecutable (void)
    717 {
    718   return _Jv_execName;
    719 }
    720 
    721 void
    722 _Jv_ThisExecutable (const char *name)
    723 {
    724   if (name)
    725     {
    726       _Jv_execName = (char *) _Jv_Malloc (strlen (name) + 1);
    727       strcpy (_Jv_execName, name);
    728     }
    729 }
    730751
    731752#ifndef DISABLE_GETENV_PROPERTIES
     
    916937
    917938  // Turn stack trace generation off while creating exception objects.
    918   _Jv_InitClass (&java::lang::Throwable::class$);
    919   java::lang::Throwable::trace_enabled = 0;
     939  _Jv_InitClass (&java::lang::VMThrowable::class$);
     940  java::lang::VMThrowable::trace_enabled = 0;
    920941 
    921942  INIT_SEGV;
     
    926947    (JvNewStringLatin1 ("/ by zero"));
    927948#endif
    928 
     949 
    929950  no_memory = new java::lang::OutOfMemoryError;
    930 
    931   java::lang::Throwable::trace_enabled = 1;
    932 
     951 
     952  java::lang::VMThrowable::trace_enabled = 1;
     953 
    933954#ifdef USE_LTDL
    934955  LTDL_SET_PRELOADED_SYMBOLS ();
     
    961982             bool is_jar)
    962983{
    963   _Jv_argv = argv;
    964   _Jv_argc = argc;
     984  _Jv_SetArgs (argc, argv);
    965985
    966986  java::lang::Runtime *runtime = NULL;
    967 
    968 
    969 #ifdef DISABLE_MAIN_ARGS
    970   _Jv_ThisExecutable ("[Embedded App]");
    971 #else
    972 #ifdef HAVE_PROC_SELF_EXE
    973   char exec_name[20];
    974   sprintf (exec_name, "/proc/%d/exe", getpid ());
    975   _Jv_ThisExecutable (exec_name);
    976 #else
    977   _Jv_ThisExecutable (argv[0]);
    978 #endif /* HAVE_PROC_SELF_EXE */
    979 #endif /* DISABLE_MAIN_ARGS */
    980987
    981988  try
Note: See TracChangeset for help on using the changeset viewer.