[vmkit-commits] [vmkit] r54735 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaRuntime.h JavaRuntimeJIT.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Wed Aug 13 07:34:47 PDT 2008


Author: geoffray
Date: Wed Aug 13 09:34:45 2008
New Revision: 54735

URL: http://llvm.org/viewvc/llvm-project?rev=54735&view=rev
Log:
Delete unused files.


Removed:
    vmkit/trunk/lib/JnJVM/VMCore/JavaRuntime.h
    vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp

Removed: vmkit/trunk/lib/JnJVM/VMCore/JavaRuntime.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaRuntime.h?rev=54734&view=auto

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaRuntime.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaRuntime.h (removed)
@@ -1,397 +0,0 @@
-//===------- JavaRuntime.h - Definition of the Java runtime ---------------===//
-//
-//                              JnJVM
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the Java runtime LLVM requires to execute Java programs.
-// The LLVM IR will perform JVM calls or access global variables that will
-// be defined at runtime.
-//
-// A clean implementation will create global variables and functions for each
-// module. Currently we don't do this, and the verifier pass in LLVM does not
-// like it.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef JNJVM_JAVA_RUNTIME_H
-#define JNJVM_JAVA_RUNTIME_H
-
-#include <map>
-
-#include "llvm/Constant.h"
-#include "llvm/DerivedTypes.h"
-#include "llvm/Function.h"
-#include "llvm/GlobalVariable.h"
-#include "llvm/Module.h"
-#include "llvm/Type.h"
-#include "llvm/Value.h"
-
-#include "mvm/JIT.h"
-
-#include "JavaClass.h"
-#include "JavaTypes.h"
-
-namespace jnjvm {
-
-class CommonClass;
-class Class;
-class JavaField;
-class JavaMethod;
-class JavaObject;
-class JavaJIT;
-class JavaRuntime;
-class Signdef;
-
-class LLVMAssessorInfo {
-public:
-  const llvm::Type* llvmType;
-  const llvm::Type* llvmTypePtr;
-  llvm::Constant* llvmNullConstant;
-  llvm::ConstantInt* sizeInBytesConstant;
-  
-  static void initialise();
-  static LLVMAssessorInfo AssessorInfo[];
-
-};
-
-
-class LLVMCommonClassInfo : public mvm::JITInfo {
-  
-  friend class JavaRuntime;
-
-protected:
-  CommonClass* classDef;
-
-private:
-  /// varGV - The LLVM global variable representing this class.
-  ///
-  llvm::GlobalVariable* varGV;
-
-#ifndef MULTIPLE_VM
-  /// delegateeGV - The LLVM global variable representing the 
-  /// java/lang/Class instance of this class.
-  llvm::GlobalVariable* delegateeGV;
-#endif
-
-
-public:
-  llvm::Value* getVar(JavaJIT* jit);
-  llvm::Value* getDelegatee(JavaJIT* jit);
-  
-  LLVMCommonClassInfo(CommonClass* cl) : 
-    classDef(cl),
-    varGV(0)
-#ifndef MULTIPLE_VM
-    ,delegateeGV(0)
-#endif
-    {}
-};
-
-class LLVMClassInfo : public LLVMCommonClassInfo {
-  friend class JavaRuntime;
-private:
-  /// virtualSizeLLVM - The LLVM constant size of instances of this class.
-  ///
-  llvm::ConstantInt* virtualSizeConstant;
-
-#ifndef MULTIPLE_VM
-  llvm::GlobalVariable* staticVarGV;
-#endif
-
-  llvm::GlobalVariable* virtualTableGV;
-  llvm::Function* virtualTracerFunction;
-  llvm::Function* staticTracerFunction;
-  /// virtualType - The LLVM type of instance of this class.
-  ///
-  const llvm::Type * virtualType;
-
-  /// staticType - The LLVM type of the static instance of this class.
-  ///
-  const llvm::Type * staticType;
-public:
-  
-  llvm::Value* getStaticVar(JavaJIT* jit);
-  llvm::Value* getVirtualTable(JavaJIT* jit);
-  llvm::Value* getVirtualSize(JavaJIT* jit);
-  llvm::Function* getStaticTracer();
-  llvm::Function* getVirtualTracer();
-  const llvm::Type* getVirtualType();
-  const llvm::Type* getStaticType();
-  
-  LLVMClassInfo(CommonClass* cl) : 
-    LLVMCommonClassInfo(cl),
-    virtualSizeConstant(0),
-#ifndef MULITPLE_VM
-    staticVarGV(0),
-#endif
-    virtualTableGV(0),
-    virtualTracerFunction(0),
-    staticTracerFunction(0),
-    virtualType(0),
-    staticType(0) {}
-};
-
-class LLVMMethodInfo : public mvm::JITInfo {
-private:
-  JavaMethod* methodDef;
-
-  llvm::Function* methodFunction;
-  llvm::ConstantInt* offsetConstant;
-  const llvm::FunctionType* functionType;
-  
-public:
-  llvm::Function* getMethod();
-  llvm::ConstantInt* getOffset();
-  const llvm::FunctionType* getFunctionType();
-  
-  LLVMMethodInfo(JavaMethod* M) : 
-    methodDef(M), 
-    methodFunction(0),
-    offsetConstant(0),
-    functionType(0) {}
-};
-
-class LLVMFieldInfo : public mvm::JITInfo {
-private:
-  JavaField* fieldDef;
-  
-  llvm::ConstantInt* offsetConstant;
-
-public:
-  llvm::ConstantInt* getOffset();
-
-  LLVMFieldInfo(JavaField* F) : 
-    fieldDef(F), 
-    offsetConstant(0) {}
-};
-
-class LLVMSignatureInfo : public mvm::JITInfo {
-private:
-  const llvm::FunctionType* staticType;
-  const llvm::FunctionType* virtualType;
-  const llvm::FunctionType* nativeType;
-  
-  const llvm::FunctionType* virtualBufType;
-  const llvm::FunctionType* staticBufType;
-
-  const llvm::PointerType* staticPtrType;
-  const llvm::PointerType* virtualPtrType;
-  const llvm::PointerType* nativePtrType;
-  
-  llvm::Function* virtualBufFunction;
-  llvm::Function* virtualAPFunction;
-  llvm::Function* staticBufFunction;
-  llvm::Function* staticAPFunction;
-  
-  Signdef* signature;
-
-  llvm::Function* createFunctionCallBuf(bool virt);
-  llvm::Function* createFunctionCallAP(bool virt);
-   
-  
-
-public:
-  const llvm::FunctionType* getVirtualType();
-  const llvm::FunctionType* getStaticType();
-  const llvm::FunctionType* getNativeType();
-
-  const llvm::FunctionType* getVirtualBufType();
-  const llvm::FunctionType* getStaticBufType();
-
-  const llvm::PointerType*  getStaticPtrType();
-  const llvm::PointerType*  getNativePtrType();
-  const llvm::PointerType*  getVirtualPtrType();
-   
-  llvm::Function* getVirtualBuf();
-  llvm::Function* getVirtualAP();
-  llvm::Function* getStaticBuf();
-  llvm::Function* getStaticAP();
-  
-  LLVMSignatureInfo(Signdef* sign) : 
-    staticType(0),
-    virtualType(0),
-    nativeType(0),
-    virtualBufType(0),
-    staticBufType(0),
-    staticPtrType(0),
-    virtualPtrType(0),
-    nativePtrType(0),
-    virtualBufFunction(0),
-    virtualAPFunction(0),
-    staticBufFunction(0),
-    staticAPFunction(0),
-    signature(sign) {}
-
-};
-
-#ifdef SERVICE_VM
-class LLVMServiceInfo : public mvm::JITInfo {
-private:
-  ServiceDomain* vm;
-  llvm::GlobalVariable* delegateeGV;
-
-public:
-  llvm::Value* getDelegatee(JavaJIT* jit);
-};
-#endif
-
-class JavaRuntime {
-  friend class LLVMClassInfo;
-private:
-  
-  static VirtualTable* makeVT(Class* cl, bool stat);
-  static VirtualTable* allocateVT(Class* cl, CommonClass::method_iterator meths);
-
-
-public:
-  
-  static llvm::ConstantInt* JavaArraySizeOffsetConstant;
-  static llvm::ConstantInt* JavaArrayElementsOffsetConstant;
-  static llvm::ConstantInt* JavaObjectLockOffsetConstant;
-  static llvm::ConstantInt* JavaObjectClassOffsetConstant;
-
-  static const llvm::Type* JavaArrayUInt8Type;
-  static const llvm::Type* JavaArraySInt8Type;
-  static const llvm::Type* JavaArrayUInt16Type;
-  static const llvm::Type* JavaArraySInt16Type;
-  static const llvm::Type* JavaArrayUInt32Type;
-  static const llvm::Type* JavaArraySInt32Type;
-  static const llvm::Type* JavaArrayLongType;
-  static const llvm::Type* JavaArrayFloatType;
-  static const llvm::Type* JavaArrayDoubleType;
-  static const llvm::Type* JavaArrayObjectType;
-  
-  static const llvm::Type* VTType;
-  static const llvm::Type* JavaObjectType;
-  static const llvm::Type* JavaArrayType;
-  static const llvm::Type* JavaClassType;
-  static const llvm::Type* JavaCacheType;
-  static const llvm::Type* EnveloppeType;
-  static const llvm::Type* CacheNodeType;
-  
-#ifdef WITH_TRACER
-  static llvm::Function* MarkAndTraceFunction;
-  static const llvm::FunctionType* MarkAndTraceType;
-  static llvm::Function* JavaObjectTracerFunction;  
-#endif
-  
-  static llvm::Function* GetSJLJBufferFunction;
-  static llvm::Function* InterfaceLookupFunction;
-  static llvm::Function* FieldLookupFunction;
-  static llvm::Function* PrintExecutionFunction;
-  static llvm::Function* PrintMethodStartFunction;
-  static llvm::Function* PrintMethodEndFunction;
-  static llvm::Function* JniProceedPendingExceptionFunction;
-  static llvm::Function* InitialisationCheckFunction;
-  static llvm::Function* ForceInitialisationCheckFunction;
-  static llvm::Function* ClassLookupFunction;
-#ifndef WITHOUT_VTABLE
-  static llvm::Function* VirtualLookupFunction;
-#endif
-  static llvm::Function* InstanceOfFunction;
-  static llvm::Function* IsAssignableFromFunction;
-  static llvm::Function* ImplementsFunction;
-  static llvm::Function* InstantiationOfArrayFunction;
-  static llvm::Function* GetDepthFunction;
-  static llvm::Function* GetClassInDisplayFunction;
-  static llvm::Function* GetDisplayFunction;
-  static llvm::Function* AquireObjectFunction;
-  static llvm::Function* ReleaseObjectFunction;
-#ifdef SERVICE_VM
-  static llvm::Function* AquireObjectInSharedDomainFunction;
-  static llvm::Function* ReleaseObjectInSharedDomainFunction;
-  static llvm::Function* ServiceCallStartFunction;
-  static llvm::Function* ServiceCallStopFunction;
-#endif
-  static llvm::Function* MultiCallNewFunction;
-  static llvm::Function* RuntimeUTF8ToStrFunction;
-  static llvm::Function* GetStaticInstanceFunction;
-  static llvm::Function* GetClassDelegateeFunction;
-  static llvm::Function* ArrayLengthFunction;
-  static llvm::Function* GetVTFunction;
-  static llvm::Function* GetClassFunction;
-  static llvm::Function* JavaObjectAllocateFunction;
-#ifdef MULTIPLE_GC
-  static llvm::Function* GetCollectorFunction;
-#endif
-  static llvm::Function* GetVTFromClassFunction;
-  static llvm::Function* GetObjectSizeFromClassFunction;
-
-  static llvm::Function* GetLockFunction;
-  static llvm::Function* GetThreadIDFunction;
-  static llvm::Function* OverflowThinLockFunction;
-
-  static llvm::ConstantInt* OffsetObjectSizeInClassConstant;
-  static llvm::ConstantInt* OffsetVTInClassConstant;
-  static llvm::ConstantInt* OffsetDepthInClassConstant;
-  static llvm::ConstantInt* OffsetDisplayInClassConstant;
-
-  static llvm::Constant* JavaClassNullConstant;
-
-  static llvm::Constant*    JavaObjectNullConstant;
-  static llvm::Constant*    UTF8NullConstant;
-  static llvm::Constant*    MaxArraySizeConstant;
-  static llvm::Constant*    JavaObjectSizeConstant;
-
-  static llvm::GlobalVariable* ArrayObjectVirtualTableGV;
-  static llvm::GlobalVariable* JavaObjectVirtualTableGV;
-  
-  static llvm::Function* GetExceptionFunction;
-  static llvm::Function* GetJavaExceptionFunction;
-  static llvm::Function* ThrowExceptionFunction;
-  static llvm::Function* ClearExceptionFunction;
-  static llvm::Function* CompareExceptionFunction;
-  static llvm::Function* NullPointerExceptionFunction;
-  static llvm::Function* IndexOutOfBoundsExceptionFunction;
-  static llvm::Function* ClassCastExceptionFunction;
-  static llvm::Function* OutOfMemoryErrorFunction;
-  static llvm::Function* NegativeArraySizeExceptionFunction;
-
-  static void InitField(JavaField* field);
-  static void InitField(JavaField* field, JavaObject* obj, uint64 val = 0);
-  static void InitField(JavaField* field, JavaObject* obj, JavaObject* val);
-  static void InitField(JavaField* field, JavaObject* obj, double val);
-  static void InitField(JavaField* field, JavaObject* obj, float val);
-
-
-  static void resolveVirtualClass(Class* cl);
-  static void resolveStaticClass(Class* cl);
-  static void setMethod(JavaMethod* meth, const char* name);
-  static void* getMethod(JavaMethod* meth);
-
-  static LLVMSignatureInfo* getSignatureInfo(Signdef* sign) {
-    return sign->getInfo<LLVMSignatureInfo>();
-  }
-  
-  static LLVMCommonClassInfo* getClassInfo(CommonClass* cl) {
-    if (cl->isArray || cl->isPrimitive) {
-      return cl->getInfo<LLVMCommonClassInfo>();
-    } else {
-      return cl->getInfo<LLVMClassInfo>();
-    }
-  }
-
-  static LLVMFieldInfo* getFieldInfo(JavaField* field) {
-    return field->getInfo<LLVMFieldInfo>();
-  }
-  
-  static LLVMMethodInfo* getMethodInfo(JavaMethod* method) {
-    return method->getInfo<LLVMMethodInfo>();
-  }
-
-#ifdef SERVICE_VM
-  static LLVMServiceInfo* getServiceInfo(ServiceDomain* service) {
-    return service->getInfo<LLVMServiceInfo>();
-  }
-#endif
-  
-  static void initialise(llvm::Module* mod);
-};
-
-}
-
-#endif

Removed: vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp?rev=54734&view=auto

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp (removed)
@@ -1,358 +0,0 @@
-//===-------------------- JavaRuntimeJIT.cpp ------------------------------===//
-//=== ---- Runtime functions called by code compiled by the JIT -----------===//
-//
-//                              JnJVM
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include <stdarg.h>
-
-#include "mvm/JIT.h"
-#include "mvm/Threads/Thread.h"
-
-#include "JavaArray.h"
-#include "JavaCache.h"
-#include "JavaClass.h"
-#include "JavaConstantPool.h"
-#include "JavaJIT.h"
-#include "JavaString.h"
-#include "JavaThread.h"
-#include "JavaTypes.h"
-#include "Jnjvm.h"
-#include "JnjvmModule.h"
-#include "LockedMap.h"
-
-#ifdef SERVICE_VM
-#include "ServiceDomain.h"
-#endif
-
-using namespace jnjvm;
-
-extern "C" JavaString* runtimeUTF8ToStr(const UTF8* val) {
-  Jnjvm* vm = JavaThread::get()->isolate;
-  return vm->UTF8ToStr(val);
-}
-
-extern "C" void* jnjvmVirtualLookup(CacheNode* cache, JavaObject *obj) {
-  Enveloppe* enveloppe = cache->enveloppe;
-  JavaCtpInfo* ctpInfo = enveloppe->ctpInfo;
-  CommonClass* ocl = obj->classOf;
-  CommonClass* cl = 0;
-  const UTF8* utf8 = 0;
-  Signdef* sign = 0;
-  uint32 index = enveloppe->index;
-  
-  ctpInfo->resolveInterfaceOrMethod(index, cl, utf8, sign);
-
-  enveloppe->cacheLock->lock();
-  CacheNode* rcache = 0;
-  CacheNode* tmp = enveloppe->firstCache;
-  CacheNode* last = tmp;
-
-  while (tmp) {
-    if (ocl == tmp->lastCible) {
-      rcache = tmp;
-      break;
-    } else {
-      last = tmp;
-      tmp = tmp->next;
-    }
-  }
-
-  if (!rcache) {
-    JavaMethod* dmeth = ocl->lookupMethod(utf8, sign->keyName, false, true);
-    if (cache->methPtr) {
-      rcache = new CacheNode(enveloppe);
-    } else {
-      rcache = cache;
-    }
-    
-    rcache->methPtr = dmeth->compiledPtr();
-    rcache->lastCible = (Class*)ocl;
-    
-  }
-
-  if (enveloppe->firstCache != rcache) {
-    CacheNode *f = enveloppe->firstCache;
-    enveloppe->firstCache = rcache;
-    last->next = rcache->next;
-    rcache->next = f;
-  }
-  
-  enveloppe->cacheLock->unlock();
-  
-  return rcache->methPtr;
-}
-
-extern "C" void* fieldLookup(JavaObject* obj, Class* caller, uint32 index,
-                             uint32 stat, void** ifStatic, uint32* offset) {
-  JavaCtpInfo* ctpInfo = caller->ctpInfo;
-  if (ctpInfo->ctpRes[index]) {
-    JavaField* field = (JavaField*)(ctpInfo->ctpRes[index]);
-    field->classDef->initialiseClass();
-    if (stat) obj = field->classDef->staticInstance();
-    void* ptr = (void*)(field->ptrOffset + (uint64)obj);
-#ifndef MULTIPLE_VM
-    if (stat) *ifStatic = ptr;
-    *offset = (uint32)field->ptrOffset;
-#endif
-    return ptr;
-  }
-  
-  CommonClass* cl = 0;
-  const UTF8* utf8 = 0;
-  Typedef* sign = 0;
-  
-  ctpInfo->resolveField(index, cl, utf8, sign);
-  
-  JavaField* field = cl->lookupField(utf8, sign->keyName, stat, true);
-  field->classDef->initialiseClass();
-  
-  if (stat) obj = ((Class*)cl)->staticInstance();
-  void* ptr = (void*)((uint64)obj + field->ptrOffset);
-  
-  ctpInfo->ctpRes[index] = field;
-#ifndef MULTIPLE_VM
-  if (stat) *ifStatic = ptr;
-  *offset = (uint32)field->ptrOffset;
-#endif
-
-  return ptr;
-}
-
-extern "C" void printMethodStart(JavaMethod* meth) {
-  printf("[%d] executing %s\n", mvm::Thread::self(), meth->printString());
-  fflush(stdout);
-}
-
-extern "C" void printMethodEnd(JavaMethod* meth) {
-  printf("[%d] return from %s\n", mvm::Thread::self(), meth->printString());
-  fflush(stdout);
-}
-
-extern "C" void printExecution(char* opcode, uint32 index, JavaMethod* meth) {
-  printf("[%d] executing %s %s at %d\n", mvm::Thread::self(), meth->printString(), 
-                                   opcode, index);
-  fflush(stdout);
-}
-
-extern "C" void jniProceedPendingException() {
-  JavaThread* th = JavaThread::get();
-  jmp_buf* buf = th->sjlj_buffers.back();
-  th->sjlj_buffers.pop_back();
-  free(buf);
-  if (JavaThread::get()->pendingException) {
-    th->throwPendingException();
-  }
-}
-
-extern "C" void* getSJLJBuffer() {
-  JavaThread* th = JavaThread::get();
-  void** buf = (void**)malloc(sizeof(jmp_buf));
-  th->sjlj_buffers.push_back((jmp_buf*)buf);
-  return (void*)buf;
-}
-
-extern "C" void jnjvmNullPointerException() {
-  JavaThread::get()->isolate->nullPointerException("null");
-}
-
-extern "C" void negativeArraySizeException(sint32 val) {
-  JavaThread::get()->isolate->negativeArraySizeException(val);
-}
-
-extern "C" void outOfMemoryError(sint32 val) {
-  JavaThread::get()->isolate->outOfMemoryError(val);
-}
-
-extern "C" void jnjvmClassCastException(JavaObject* obj, CommonClass* cl) {
-  JavaThread::get()->isolate->classCastException("");
-}
-
-extern "C" void indexOutOfBoundsException(JavaObject* obj, sint32 index) {
-  JavaThread::get()->isolate->indexOutOfBounds(obj, index);
-}
-
-#ifdef MULTIPLE_VM
-extern "C" JavaObject* getStaticInstance(Class* cl, Jnjvm* vm) {
-  std::pair<JavaState, JavaObject*>* val = vm->statics->lookup(cl);
-  if (!val || !(val->second)) {
-    cl->initialiseClass();
-    val = vm->statics->lookup(cl);
-  }
-  return val->second;
-}
-#endif
-
-extern "C" CommonClass* initialisationCheck(CommonClass* cl) {
-  cl->isolate->initialiseClass(cl);
-  return cl;
-}
-
-extern "C" JavaObject* getClassDelegatee(CommonClass* cl) {
-#ifdef MULTIPLE_VM
-  Jnjvm* vm = JavaThread::get()->isolate;
-#else
-  Jnjvm* vm = cl->isolate;
-#endif
-  return vm->getClassDelegatee(cl);
-}
-
-extern "C" Class* newLookup(Class* caller, uint32 index, Class** toAlloc,
-                            uint32 clinit) { 
-  JavaCtpInfo* ctpInfo = caller->ctpInfo;
-  Class* cl = (Class*)ctpInfo->loadClass(index);
-  cl->resolveClass(clinit);
-  
-  *toAlloc = cl;
-  return cl;
-}
-
-#ifndef WITHOUT_VTABLE
-extern "C" uint32 vtableLookup(JavaObject* obj, Class* caller, uint32 index,
-                               uint32* offset) {
-  CommonClass* cl = 0;
-  const UTF8* utf8 = 0;
-  Signdef* sign = 0;
-  
-  caller->ctpInfo->resolveInterfaceOrMethod(index, cl, utf8, sign);
-  JavaMethod* dmeth = cl->lookupMethodDontThrow(utf8, sign->keyName, false,
-                                                true);
-  if (!dmeth) {
-    // Arg, it should have been an invoke interface.... Perform the lookup
-    // on the object class and do not update offset.
-    dmeth = obj->classOf->lookupMethod(utf8, sign->keyName, false, true);
-    return dmeth->offset;
-  }
-  *offset = dmeth->offset;
-  return *offset;
-}
-#endif
-
-
-static JavaArray* multiCallNewIntern(arrayCtor_t ctor, ClassArray* cl,
-                                     uint32 len,
-                                     sint32* dims,
-                                     Jnjvm* vm) {
-  if (len <= 0) JavaThread::get()->isolate->unknownError("Can not happen");
-  JavaArray* _res = ctor(dims[0], cl, vm);
-  if (len > 1) {
-    ArrayObject* res = (ArrayObject*)_res;
-    CommonClass* _base = cl->baseClass();
-    if (_base->isArray) {
-      ClassArray* base = (ClassArray*)_base;
-      AssessorDesc* func = base->funcs();
-      arrayCtor_t newCtor = func->arrayCtor;
-      if (dims[0] > 0) {
-        for (sint32 i = 0; i < dims[0]; ++i) {
-          res->elements[i] = multiCallNewIntern(newCtor, base, (len - 1),
-                                                &dims[1], vm);
-        }
-      } else {
-        for (uint32 i = 1; i < len; ++i) {
-          sint32 p = dims[i];
-          if (p < 0) JavaThread::get()->isolate->negativeArraySizeException(p);
-        }
-      }
-    } else {
-      JavaThread::get()->isolate->unknownError("Can not happen");
-    }
-  }
-  return _res;
-}
-
-extern "C" JavaArray* multiCallNew(ClassArray* cl, uint32 len, ...) {
-  va_list ap;
-  va_start(ap, len);
-  sint32* dims = (sint32*)alloca(sizeof(sint32) * len);
-  for (uint32 i = 0; i < len; ++i){
-    dims[i] = va_arg(ap, int);
-  }
-#ifdef MULTIPLE_VM
-  Jnjvm* vm = va_arg(ap, Jnjvm*);
-#else
-  Jnjvm* vm = 0;
-#endif
-  return multiCallNewIntern((arrayCtor_t)ArrayObject::acons, cl, len, dims, vm);
-}
-
-extern "C" void JavaObjectAquire(JavaObject* obj) {
-#ifdef SERVICE_VM
-  ServiceDomain* vm = (ServiceDomain*)JavaThread::get()->isolate;
-  if (!(vm->GC->isMyObject(obj))) {
-    vm->serviceError(vm, "I'm locking an object I don't own");
-  }
-#endif
-  obj->acquire();
-}
-
-
-extern "C" void JavaObjectRelease(JavaObject* obj) {
-  verifyNull(obj);
-#ifdef SERVICE_VM
-  ServiceDomain* vm = (ServiceDomain*)JavaThread::get()->isolate;
-  if (!(vm->GC->isMyObject(obj))) {
-    vm->serviceError(vm, "I'm unlocking an object I don't own");
-  }
-#endif
-  obj->release();
-}
-
-#ifdef SERVICE_VM
-extern "C" void JavaObjectAquireInSharedDomain(JavaObject* obj) {
-  verifyNull(obj);
-  obj->acquire();
-}
-
-extern "C" void JavaObjectReleaseInSharedDomain(JavaObject* obj) {
-  verifyNull(obj);
-  obj->release();
-}
-#endif
-
-extern "C" bool instanceOf(JavaObject* obj, CommonClass* cl) {
-  return obj->instanceOf(cl);
-}
-
-extern "C" bool instantiationOfArray(CommonClass* cl1, ClassArray* cl2) {
-  return cl1->instantiationOfArray(cl2);
-}
-
-extern "C" bool implements(CommonClass* cl1, CommonClass* cl2) {
-  return cl1->implements(cl2);
-}
-
-extern "C" bool isAssignableFrom(CommonClass* cl1, CommonClass* cl2) {
-  return cl1->isAssignableFrom(cl2);
-}
-
-extern "C" void* JavaThreadGetException() {
-  return JavaThread::getException();
-}
-
-extern "C" void JavaThreadThrowException(JavaObject* obj) {
-  return JavaThread::throwException(obj);
-}
-
-extern "C" JavaObject* JavaThreadGetJavaException() {
-  return JavaThread::getJavaException();
-}
-
-extern "C" bool JavaThreadCompareException(Class* cl) {
-  return JavaThread::compareException(cl);
-}
-
-extern "C" void JavaThreadClearException() {
-  return JavaThread::clearException();
-}
-
-extern "C" uint32 getThreadID() {
-  return JavaThread::get()->threadID;
-}
-
-extern "C" void overflowThinLock(JavaObject* obj) {
-  obj->overflowThinlock();
-}





More information about the vmkit-commits mailing list