OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-dev/] [fsf-gcc-snapshot-1-mar-12/] [or1k-gcc/] [libjava/] [jni-libjvm.cc] - Diff between revs 753 and 783

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 753 Rev 783
// jni-libjvm.cc - an implementation of the JNI invocation API.
// jni-libjvm.cc - an implementation of the JNI invocation API.
 
 
/* Copyright (C) 2006  Free Software Foundation
/* Copyright (C) 2006  Free Software Foundation
 
 
   This file is part of libgcj.
   This file is part of libgcj.
 
 
This software is copyrighted work licensed under the terms of the
This software is copyrighted work licensed under the terms of the
Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
details.  */
details.  */
 
 
#include <gcj/cni.h>
#include <gcj/cni.h>
#include <gcj/javaprims.h>
#include <gcj/javaprims.h>
#include <java-assert.h>
#include <java-assert.h>
#include <jvm.h>
#include <jvm.h>
#include <jni.h>
#include <jni.h>
 
 
using namespace gcj;
using namespace gcj;
 
 
// Forward declarations.
// Forward declarations.
extern struct JNIInvokeInterface_ _Jv_JNI_InvokeFunctions;
extern struct JNIInvokeInterface_ _Jv_JNI_InvokeFunctions;
extern jint JNICALL _Jv_JNI_AttachCurrentThread (JavaVM *vm,
extern jint JNICALL _Jv_JNI_AttachCurrentThread (JavaVM *vm,
                                                 void **penv, void *args);
                                                 void **penv, void *args);
extern JavaVM *_Jv_the_vm;
extern JavaVM *_Jv_the_vm;
 
 
jint JNICALL
jint JNICALL
JNI_GetDefaultJavaVMInitArgs (void *args)
JNI_GetDefaultJavaVMInitArgs (void *args)
{
{
  jint version = * (jint *) args;
  jint version = * (jint *) args;
  // Here we only support 1.2 and 1.4.
  // Here we only support 1.2 and 1.4.
  if (version != JNI_VERSION_1_2 && version != JNI_VERSION_1_4)
  if (version != JNI_VERSION_1_2 && version != JNI_VERSION_1_4)
    return JNI_EVERSION;
    return JNI_EVERSION;
 
 
  JavaVMInitArgs *ia = reinterpret_cast<JavaVMInitArgs *> (args);
  JavaVMInitArgs *ia = reinterpret_cast<JavaVMInitArgs *> (args);
  ia->version = JNI_VERSION_1_4;
  ia->version = JNI_VERSION_1_4;
  ia->nOptions = 0;
  ia->nOptions = 0;
  ia->options = NULL;
  ia->options = NULL;
  ia->ignoreUnrecognized = true;
  ia->ignoreUnrecognized = true;
 
 
  return 0;
  return 0;
}
}
 
 
jint JNICALL
jint JNICALL
JNI_CreateJavaVM (JavaVM **vm, void **penv, void *args)
JNI_CreateJavaVM (JavaVM **vm, void **penv, void *args)
{
{
  JvAssert (! _Jv_the_vm);
  JvAssert (! _Jv_the_vm);
 
 
  jint version = * (jint *) args;
  jint version = * (jint *) args;
  // We only support 1.2 and 1.4.
  // We only support 1.2 and 1.4.
  if (version != JNI_VERSION_1_2 && version != JNI_VERSION_1_4)
  if (version != JNI_VERSION_1_2 && version != JNI_VERSION_1_4)
    return JNI_EVERSION;
    return JNI_EVERSION;
 
 
  JvVMInitArgs* vm_args = reinterpret_cast<JvVMInitArgs *> (args);
  JvVMInitArgs* vm_args = reinterpret_cast<JvVMInitArgs *> (args);
 
 
  jint result = _Jv_CreateJavaVM (vm_args);
  jint result = _Jv_CreateJavaVM (vm_args);
  if (result)
  if (result)
    return result;
    return result;
 
 
  // FIXME: synchronize
  // FIXME: synchronize
  JavaVM *nvm = (JavaVM *) _Jv_MallocUnchecked (sizeof (JavaVM));
  JavaVM *nvm = (JavaVM *) _Jv_MallocUnchecked (sizeof (JavaVM));
  if (nvm == NULL)
  if (nvm == NULL)
    return JNI_ERR;
    return JNI_ERR;
  nvm->functions = &_Jv_JNI_InvokeFunctions;
  nvm->functions = &_Jv_JNI_InvokeFunctions;
 
 
  jint r =_Jv_JNI_AttachCurrentThread (nvm, penv, NULL);
  jint r =_Jv_JNI_AttachCurrentThread (nvm, penv, NULL);
  if (r < 0)
  if (r < 0)
    return r;
    return r;
 
 
  _Jv_the_vm = nvm;
  _Jv_the_vm = nvm;
  *vm = _Jv_the_vm;
  *vm = _Jv_the_vm;
 
 
  return 0;
  return 0;
}
}
 
 
jint JNICALL
jint JNICALL
JNI_GetCreatedJavaVMs (JavaVM **vm_buffer, jsize buf_len, jsize *n_vms)
JNI_GetCreatedJavaVMs (JavaVM **vm_buffer, jsize buf_len, jsize *n_vms)
{
{
  if (buf_len <= 0)
  if (buf_len <= 0)
    return JNI_ERR;
    return JNI_ERR;
 
 
  // We only support a single VM.
  // We only support a single VM.
  if (_Jv_the_vm != NULL)
  if (_Jv_the_vm != NULL)
    {
    {
      vm_buffer[0] = _Jv_the_vm;
      vm_buffer[0] = _Jv_the_vm;
      *n_vms = 1;
      *n_vms = 1;
    }
    }
  else
  else
    *n_vms = 0;
    *n_vms = 0;
  return 0;
  return 0;
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.