コード例 #1
0
ファイル: Reader.cpp プロジェクト: chanwit/vmkit
ArrayUInt8* Reader::openZip(JnjvmBootstrapLoader* loader, ZipArchive* archive,
                            const char* filename) {
  ArrayUInt8* res = 0;
  llvm_gcroot(res, 0);
  ZipFile* file = archive->getFile(filename);
  if (file != 0) {
    UserClassArray* array = loader->upcalls->ArrayOfByte;
    res = (ArrayUInt8*)array->doNew((sint32)file->ucsize, JavaThread::get()->getJVM());
    if (archive->readFile(res, file) != 0) {
      return res;
    }
  }
  return NULL;
}
コード例 #2
0
ファイル: JavaUpcalls.cpp プロジェクト: ChrisKitching/vmkit
extern "C" JavaObject* Java_java_lang_reflect_AccessibleObject_getDeclaredAnnotations__() {
  JavaObject* res = 0;
  llvm_gcroot(res, 0);
  
  BEGIN_NATIVE_EXCEPTION(0)
  
  Jnjvm* vm = JavaThread::get()->getJVM();
  UserClassArray* array = vm->upcalls->constructorArrayAnnotation;
  res = array->doNew(0, vm);

  END_NATIVE_EXCEPTION

  return res;
}
コード例 #3
0
ファイル: Reader.cpp プロジェクト: chanwit/vmkit
ArrayUInt8* Reader::openFile(JnjvmBootstrapLoader* loader, const char* path) {
  ArrayUInt8* res = NULL;
  llvm_gcroot(res, 0);
  FILE* fp = fopen(path, "r");
  if (fp != 0) {
    fseek(fp, 0, SeekEnd);
    long nbb = ftell(fp);
    fseek(fp, 0, SeekSet);
    UserClassArray* array = loader->upcalls->ArrayOfByte;
    res = (ArrayUInt8*)array->doNew((sint32)nbb, JavaThread::get()->getJVM());
    if (fread(ArrayUInt8::getElements(res), nbb, 1, fp) == 0) {
      fprintf(stderr, "fread error\n");
      abort();  
    }
    fclose(fp);
  }
  return res;
}