⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 natsystem.cc

📁 this gcc-g++-3.3.1.tar.gz is a source file of gcc, you can learn more about gcc through this codes f
💻 CC
字号:
// natSystem.cc - Native code implementing System class./* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation   This file is part of libgcj.This software is copyrighted work licensed under the terms of theLibgcj License.  Please consult the file "LIBGCJ_LICENSE" fordetails.  */#include <config.h>#include <platform.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <gcj/cni.h>#include <jvm.h>#include <java/lang/System.h>#include <java/lang/Class.h>#include <java/lang/ArrayStoreException.h>#include <java/lang/ArrayIndexOutOfBoundsException.h>#include <java/lang/NullPointerException.h>#include <java/io/PrintStream.h>#include <java/io/InputStream.h>voidjava::lang::System::setErr0 (java::io::PrintStream *newErr){  err = newErr;}voidjava::lang::System::setIn0 (java::io::InputStream *newIn){  in = newIn;}voidjava::lang::System::setOut0 (java::io::PrintStream *newOut){  out = newOut;}voidjava::lang::System::arraycopy (jobject src, jint src_offset,			       jobject dst, jint dst_offset,			       jint count){  if (! src || ! dst)    throw new NullPointerException;  jclass src_c = src->getClass();  jclass dst_c = dst->getClass();  jclass src_comp = src_c->getComponentType();  jclass dst_comp = dst_c->getComponentType();  if (! src_c->isArray() || ! dst_c->isArray()      || src_comp->isPrimitive() != dst_comp->isPrimitive()      || (src_comp->isPrimitive() && src_comp != dst_comp))    throw new ArrayStoreException;  __JArray *src_a = (__JArray *) src;  __JArray *dst_a = (__JArray *) dst;  if (src_offset < 0 || dst_offset < 0 || count < 0      || src_offset + count > src_a->length      || dst_offset + count > dst_a->length)    throw new ArrayIndexOutOfBoundsException;  // Do-nothing cases.  if ((src == dst && src_offset == dst_offset)      || ! count)    return;  // If both are primitive, we can optimize trivially.  If DST  // components are always assignable from SRC components, then we  // will never need to raise an error, and thus can do the  // optimization.  If source and destinations are the same, then we  // know that the assignability premise always holds.  const bool prim = src_comp->isPrimitive();  if (prim || dst_comp->isAssignableFrom(src_comp) || src == dst)    {      const size_t size = (prim ? src_comp->size()			   : sizeof elements((jobjectArray)src)[0]);      char *src_elts = _Jv_GetArrayElementFromElementType (src, src_comp);      src_elts += size * src_offset;      char *dst_elts = _Jv_GetArrayElementFromElementType (dst, dst_comp);      dst_elts += size * dst_offset;#if HAVE_MEMMOVE      // We don't bother trying memcpy.  It can't be worth the cost of      // the check.      // Don't cast to (void*), as memmove may expect (char*)      memmove (dst_elts, src_elts, count * size);#else      bcopy (src_elts, dst_elts, count * size);#endif    }  else    {      jobject *src_elts = elements ((jobjectArray) src_a) + src_offset;      jobject *dst_elts = elements ((jobjectArray) dst_a) + dst_offset;      for (int i = 0; i < count; ++i)	{	  if (*src_elts	      && ! dst_comp->isAssignableFrom((*src_elts)->getClass()))	    throw new ArrayStoreException;	  *dst_elts++ = *src_elts++;	}    }}jlongjava::lang::System::currentTimeMillis (void){  return _Jv_platform_gettimeofday ();}jintjava::lang::System::identityHashCode (jobject obj){  return _Jv_HashCode (obj);}jbooleanjava::lang::System::isWordsBigEndian (void){  union  {    long lval;    char cval;  } u;  u.lval = 1;  return u.cval == 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -