aboutsummaryrefslogtreecommitdiff
path: root/libjava/sun/misc
diff options
context:
space:
mode:
authorAndrew Haley <aph@redhat.com>2016-09-30 16:24:48 +0000
committerAndrew Haley <aph@gcc.gnu.org>2016-09-30 16:24:48 +0000
commit07b78716af6a9d7c9fd1e94d9baf94a52c873947 (patch)
tree3f22b3241c513ad168c8353805614ae1249410f4 /libjava/sun/misc
parenteae993948bae8b788c53772bcb9217c063716f93 (diff)
downloadgcc-07b78716af6a9d7c9fd1e94d9baf94a52c873947.zip
gcc-07b78716af6a9d7c9fd1e94d9baf94a52c873947.tar.gz
gcc-07b78716af6a9d7c9fd1e94d9baf94a52c873947.tar.bz2
Makefile.def: Remove libjava.
2016-09-30 Andrew Haley <aph@redhat.com> * Makefile.def: Remove libjava. * Makefile.tpl: Likewise. * Makefile.in: Regenerate. * configure.ac: Likewise. * configure: Likewise. * gcc/java: Remove. * libjava: Likewise. From-SVN: r240662
Diffstat (limited to 'libjava/sun/misc')
-rw-r--r--libjava/sun/misc/Service.h30
-rw-r--r--libjava/sun/misc/ServiceConfigurationError.h30
-rw-r--r--libjava/sun/misc/Unsafe.h53
-rw-r--r--libjava/sun/misc/Unsafe.java328
-rw-r--r--libjava/sun/misc/natUnsafe.cc253
5 files changed, 0 insertions, 694 deletions
diff --git a/libjava/sun/misc/Service.h b/libjava/sun/misc/Service.h
deleted file mode 100644
index e698fed..0000000
--- a/libjava/sun/misc/Service.h
+++ /dev/null
@@ -1,30 +0,0 @@
-
-// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
-
-#ifndef __sun_misc_Service__
-#define __sun_misc_Service__
-
-#pragma interface
-
-#include <java/lang/Object.h>
-extern "Java"
-{
- namespace sun
- {
- namespace misc
- {
- class Service;
- }
- }
-}
-
-class sun::misc::Service : public ::java::lang::Object
-{
-
-public:
- Service();
- static ::java::util::Iterator * providers(::java::lang::Class *, ::java::lang::ClassLoader *);
- static ::java::lang::Class class$;
-};
-
-#endif // __sun_misc_Service__
diff --git a/libjava/sun/misc/ServiceConfigurationError.h b/libjava/sun/misc/ServiceConfigurationError.h
deleted file mode 100644
index aee51b3..0000000
--- a/libjava/sun/misc/ServiceConfigurationError.h
+++ /dev/null
@@ -1,30 +0,0 @@
-
-// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
-
-#ifndef __sun_misc_ServiceConfigurationError__
-#define __sun_misc_ServiceConfigurationError__
-
-#pragma interface
-
-#include <java/lang/Error.h>
-extern "Java"
-{
- namespace sun
- {
- namespace misc
- {
- class ServiceConfigurationError;
- }
- }
-}
-
-class sun::misc::ServiceConfigurationError : public ::java::lang::Error
-{
-
-public:
- ServiceConfigurationError();
- ServiceConfigurationError(::java::lang::String *);
- static ::java::lang::Class class$;
-};
-
-#endif // __sun_misc_ServiceConfigurationError__
diff --git a/libjava/sun/misc/Unsafe.h b/libjava/sun/misc/Unsafe.h
deleted file mode 100644
index d50c3e0..0000000
--- a/libjava/sun/misc/Unsafe.h
+++ /dev/null
@@ -1,53 +0,0 @@
-
-// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-
-
-#ifndef __sun_misc_Unsafe__
-#define __sun_misc_Unsafe__
-
-#pragma interface
-
-#include <java/lang/Object.h>
-extern "Java"
-{
- namespace sun
- {
- namespace misc
- {
- class Unsafe;
- }
- }
-}
-
-class sun::misc::Unsafe : public ::java::lang::Object
-{
-
- Unsafe();
-public:
- static ::sun::misc::Unsafe * getUnsafe();
- virtual jlong objectFieldOffset(::java::lang::reflect::Field *);
- virtual jboolean compareAndSwapInt(::java::lang::Object *, jlong, jint, jint);
- virtual jboolean compareAndSwapLong(::java::lang::Object *, jlong, jlong, jlong);
- virtual jboolean compareAndSwapObject(::java::lang::Object *, jlong, ::java::lang::Object *, ::java::lang::Object *);
- virtual void putOrderedInt(::java::lang::Object *, jlong, jint);
- virtual void putOrderedLong(::java::lang::Object *, jlong, jlong);
- virtual void putOrderedObject(::java::lang::Object *, jlong, ::java::lang::Object *);
- virtual void putIntVolatile(::java::lang::Object *, jlong, jint);
- virtual jint getIntVolatile(::java::lang::Object *, jlong);
- virtual void putLongVolatile(::java::lang::Object *, jlong, jlong);
- virtual void putLong(::java::lang::Object *, jlong, jlong);
- virtual jlong getLongVolatile(::java::lang::Object *, jlong);
- virtual jlong getLong(::java::lang::Object *, jlong);
- virtual void putObjectVolatile(::java::lang::Object *, jlong, ::java::lang::Object *);
- virtual void putObject(::java::lang::Object *, jlong, ::java::lang::Object *);
- virtual ::java::lang::Object * getObjectVolatile(::java::lang::Object *, jlong);
- virtual jint arrayBaseOffset(::java::lang::Class *);
- virtual jint arrayIndexScale(::java::lang::Class *);
- virtual void unpark(::java::lang::Thread *);
- virtual void park(jboolean, jlong);
-private:
- static ::sun::misc::Unsafe * unsafe;
-public:
- static ::java::lang::Class class$;
-};
-
-#endif // __sun_misc_Unsafe__
diff --git a/libjava/sun/misc/Unsafe.java b/libjava/sun/misc/Unsafe.java
deleted file mode 100644
index fa199f8..0000000
--- a/libjava/sun/misc/Unsafe.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/* Unsafe.java - Unsafe operations needed for concurrency
- Copyright (C) 2006 Free Software Foundation
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package sun.misc;
-
-import java.lang.reflect.Field;
-
-/**
- * This class should provide access to low-level operations and its
- * use should be limited to trusted code. Fields can be accessed using
- * memory addresses, with undefined behaviour occurring if invalid memory
- * addresses are given.
- *
- * @author Tom Tromey (tromey@redhat.com)
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- */
-public class Unsafe
-{
- // Singleton class.
- private static Unsafe unsafe = new Unsafe();
-
- /**
- * Private default constructor to prevent creation of an arbitrary
- * number of instances.
- */
- private Unsafe()
- {
- }
-
- /**
- * Retrieve the singleton instance of <code>Unsafe</code>. The calling
- * method should guard this instance from untrusted code, as it provides
- * access to low-level operations such as direct memory access.
- *
- * @throws SecurityException if a security manager exists and prevents
- * access to the system properties.
- */
- public static Unsafe getUnsafe()
- {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPropertiesAccess();
- return unsafe;
- }
-
- /**
- * Returns the memory address offset of the given static field.
- * The offset is merely used as a means to access a particular field
- * in the other methods of this class. The value is unique to the given
- * field and the same value should be returned on each subsequent call.
- *
- * @param field the field whose offset should be returned.
- * @return the offset of the given field.
- */
- public native long objectFieldOffset(Field field);
-
- /**
- * Compares the value of the integer field at the specified offset
- * in the supplied object with the given expected value, and updates
- * it if they match. The operation of this method should be atomic,
- * thus providing an uninterruptible way of updating an integer field.
- *
- * @param obj the object containing the field to modify.
- * @param offset the offset of the integer field within <code>obj</code>.
- * @param expect the expected value of the field.
- * @param update the new value of the field if it equals <code>expect</code>.
- * @return true if the field was changed.
- */
- public native boolean compareAndSwapInt(Object obj, long offset,
- int expect, int update);
-
- /**
- * Compares the value of the long field at the specified offset
- * in the supplied object with the given expected value, and updates
- * it if they match. The operation of this method should be atomic,
- * thus providing an uninterruptible way of updating a long field.
- *
- * @param obj the object containing the field to modify.
- * @param offset the offset of the long field within <code>obj</code>.
- * @param expect the expected value of the field.
- * @param update the new value of the field if it equals <code>expect</code>.
- * @return true if the field was changed.
- */
- public native boolean compareAndSwapLong(Object obj, long offset,
- long expect, long update);
-
- /**
- * Compares the value of the object field at the specified offset
- * in the supplied object with the given expected value, and updates
- * it if they match. The operation of this method should be atomic,
- * thus providing an uninterruptible way of updating an object field.
- *
- * @param obj the object containing the field to modify.
- * @param offset the offset of the object field within <code>obj</code>.
- * @param expect the expected value of the field.
- * @param update the new value of the field if it equals <code>expect</code>.
- * @return true if the field was changed.
- */
- public native boolean compareAndSwapObject(Object obj, long offset,
- Object expect, Object update);
-
- /**
- * Sets the value of the integer field at the specified offset in the
- * supplied object to the given value. This is an ordered or lazy
- * version of <code>putIntVolatile(Object,long,int)</code>, which
- * doesn't guarantee the immediate visibility of the change to other
- * threads. It is only really useful where the integer field is
- * <code>volatile</code>, and is thus expected to change unexpectedly.
- *
- * @param obj the object containing the field to modify.
- * @param offset the offset of the integer field within <code>obj</code>.
- * @param value the new value of the field.
- * @see #putIntVolatile(Object,long,int)
- */
- public native void putOrderedInt(Object obj, long offset, int value);
-
- /**
- * Sets the value of the long field at the specified offset in the
- * supplied object to the given value. This is an ordered or lazy
- * version of <code>putLongVolatile(Object,long,long)</code>, which
- * doesn't guarantee the immediate visibility of the change to other
- * threads. It is only really useful where the long field is
- * <code>volatile</code>, and is thus expected to change unexpectedly.
- *
- * @param obj the object containing the field to modify.
- * @param offset the offset of the long field within <code>obj</code>.
- * @param value the new value of the field.
- * @see #putLongVolatile(Object,long,long)
- */
- public native void putOrderedLong(Object obj, long offset, long value);
-
- /**
- * Sets the value of the object field at the specified offset in the
- * supplied object to the given value. This is an ordered or lazy
- * version of <code>putObjectVolatile(Object,long,Object)</code>, which
- * doesn't guarantee the immediate visibility of the change to other
- * threads. It is only really useful where the object field is
- * <code>volatile</code>, and is thus expected to change unexpectedly.
- *
- * @param obj the object containing the field to modify.
- * @param offset the offset of the object field within <code>obj</code>.
- * @param value the new value of the field.
- */
- public native void putOrderedObject(Object obj, long offset, Object value);
-
- /**
- * Sets the value of the integer field at the specified offset in the
- * supplied object to the given value, with volatile store semantics.
- *
- * @param obj the object containing the field to modify.
- * @param offset the offset of the integer field within <code>obj</code>.
- * @param value the new value of the field.
- */
- public native void putIntVolatile(Object obj, long offset, int value);
-
- /**
- * Retrieves the value of the integer field at the specified offset in the
- * supplied object with volatile load semantics.
- *
- * @param obj the object containing the field to read.
- * @param offset the offset of the integer field within <code>obj</code>.
- */
- public native int getIntVolatile(Object obj, long offset);
-
- /**
- * Sets the value of the long field at the specified offset in the
- * supplied object to the given value, with volatile store semantics.
- *
- * @param obj the object containing the field to modify.
- * @param offset the offset of the long field within <code>obj</code>.
- * @param value the new value of the field.
- * @see #putLong(Object,long,long)
- */
- public native void putLongVolatile(Object obj, long offset, long value);
-
- /**
- * Sets the value of the long field at the specified offset in the
- * supplied object to the given value.
- *
- * @param obj the object containing the field to modify.
- * @param offset the offset of the long field within <code>obj</code>.
- * @param value the new value of the field.
- * @see #putLongVolatile(Object,long,long)
- */
- public native void putLong(Object obj, long offset, long value);
-
- /**
- * Retrieves the value of the long field at the specified offset in the
- * supplied object with volatile load semantics.
- *
- * @param obj the object containing the field to read.
- * @param offset the offset of the long field within <code>obj</code>.
- * @see #getLong(Object,long)
- */
- public native long getLongVolatile(Object obj, long offset);
-
- /**
- * Retrieves the value of the long field at the specified offset in the
- * supplied object.
- *
- * @param obj the object containing the field to read.
- * @param offset the offset of the long field within <code>obj</code>.
- * @see #getLongVolatile(Object,long)
- */
- public native long getLong(Object obj, long offset);
-
- /**
- * Sets the value of the object field at the specified offset in the
- * supplied object to the given value, with volatile store semantics.
- *
- * @param obj the object containing the field to modify.
- * @param offset the offset of the object field within <code>obj</code>.
- * @param value the new value of the field.
- * @see #putObject(Object,long,Object)
- */
- public native void putObjectVolatile(Object obj, long offset, Object value);
-
- /**
- * Sets the value of the object field at the specified offset in the
- * supplied object to the given value.
- *
- * @param obj the object containing the field to modify.
- * @param offset the offset of the object field within <code>obj</code>.
- * @param value the new value of the field.
- * @see #putObjectVolatile(Object,long,Object)
- */
- public native void putObject(Object obj, long offset, Object value);
-
- /**
- * Retrieves the value of the object field at the specified offset in the
- * supplied object with volatile load semantics.
- *
- * @param obj the object containing the field to read.
- * @param offset the offset of the object field within <code>obj</code>.
- */
- public native Object getObjectVolatile(Object obj, long offset);
-
- /**
- * Returns the offset of the first element for a given array class.
- * To access elements of the array class, this value may be used along
- * with that returned by
- * <a href="#arrayIndexScale"><code>arrayIndexScale</code></a>,
- * if non-zero.
- *
- * @param arrayClass the class for which the first element's address should
- * be obtained.
- * @return the offset of the first element of the array class.
- * @see arrayIndexScale(Class)
- */
- public native int arrayBaseOffset(Class arrayClass);
-
- /**
- * Returns the scale factor used for addressing elements of the supplied
- * array class. Where a suitable scale factor can not be returned (e.g.
- * for primitive types), zero should be returned. The returned value
- * can be used with
- * <a href="#arrayBaseOffset"><code>arrayBaseOffset</code></a>
- * to access elements of the class.
- *
- * @param arrayClass the class whose scale factor should be returned.
- * @return the scale factor, or zero if not supported for this array class.
- */
- public native int arrayIndexScale(Class arrayClass);
-
- /**
- * Releases the block on a thread created by
- * <a href="#park"><code>park</code></a>. This method can also be used
- * to terminate a blockage caused by a prior call to <code>park</code>.
- * This operation is unsafe, as the thread must be guaranteed to be
- * live. This is true of Java, but not native code.
- *
- * @param thread the thread to unblock.
- */
- public native void unpark(Thread thread);
-
- /**
- * Blocks the thread until a matching
- * <a href="#unpark"><code>unpark</code></a> occurs, the thread is
- * interrupted or the optional timeout expires. If an <code>unpark</code>
- * call has already occurred, this also counts. A timeout value of zero
- * is defined as no timeout. When <code>isAbsolute</code> is
- * <code>true</code>, the timeout is in milliseconds relative to the
- * epoch. Otherwise, the value is the number of nanoseconds which must
- * occur before timeout. This call may also return spuriously (i.e.
- * for no apparent reason).
- *
- * @param isAbsolute true if the timeout is specified in milliseconds from
- * the epoch.
- * @param time either the number of nanoseconds to wait, or a time in
- * milliseconds from the epoch to wait for.
- */
- public native void park(boolean isAbsolute, long time);
-
-}
diff --git a/libjava/sun/misc/natUnsafe.cc b/libjava/sun/misc/natUnsafe.cc
deleted file mode 100644
index 0bd2d21..0000000
--- a/libjava/sun/misc/natUnsafe.cc
+++ /dev/null
@@ -1,253 +0,0 @@
-// natUnsafe.cc - Implementation of sun.misc.Unsafe native methods.
-
-/* Copyright (C) 2006, 2007
- Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
-#include <gcj/cni.h>
-#include <gcj/field.h>
-#include <gcj/javaprims.h>
-#include <jvm.h>
-#include <sun/misc/Unsafe.h>
-#include <java/lang/System.h>
-#include <java/lang/InterruptedException.h>
-
-#include <java/lang/Thread.h>
-#include <java/lang/Long.h>
-
-#include "sysdep/locks.h"
-
-// Use a spinlock for multi-word accesses
-class spinlock
-{
- static volatile obj_addr_t lock;
-
-public:
-
-spinlock ()
- {
- while (! compare_and_swap (&lock, 0, 1))
- _Jv_ThreadYield ();
- }
- ~spinlock ()
- {
- release_set (&lock, 0);
- }
-};
-
-// This is a single lock that is used for all synchronized accesses if
-// the compiler can't generate inline compare-and-swap operations. In
-// most cases it'll never be used, but the i386 needs it for 64-bit
-// locked accesses and so does PPC32. It's worth building libgcj with
-// target=i486 (or above) to get the inlines.
-volatile obj_addr_t spinlock::lock;
-
-
-static inline bool
-compareAndSwap (volatile jint *addr, jint old, jint new_val)
-{
- jboolean result = false;
- spinlock lock;
- if ((result = (*addr == old)))
- *addr = new_val;
- return result;
-}
-
-static inline bool
-compareAndSwap (volatile jlong *addr, jlong old, jlong new_val)
-{
- jboolean result = false;
- spinlock lock;
- if ((result = (*addr == old)))
- *addr = new_val;
- return result;
-}
-
-static inline bool
-compareAndSwap (volatile jobject *addr, jobject old, jobject new_val)
-{
- jboolean result = false;
- spinlock lock;
- if ((result = (*addr == old)))
- *addr = new_val;
- return result;
-}
-
-
-jlong
-sun::misc::Unsafe::objectFieldOffset (::java::lang::reflect::Field *field)
-{
- _Jv_Field *fld = _Jv_FromReflectedField (field);
- // FIXME: what if it is not an instance field?
- return fld->getOffset();
-}
-
-jint
-sun::misc::Unsafe::arrayBaseOffset (jclass arrayClass)
-{
- // FIXME: assert that arrayClass is array.
- jclass eltClass = arrayClass->getComponentType();
- return (jint)(jlong) _Jv_GetArrayElementFromElementType (NULL, eltClass);
-}
-
-jint
-sun::misc::Unsafe::arrayIndexScale (jclass arrayClass)
-{
- // FIXME: assert that arrayClass is array.
- jclass eltClass = arrayClass->getComponentType();
- if (eltClass->isPrimitive())
- return eltClass->size();
- return sizeof (void *);
-}
-
-// These methods are used when the compiler fails to generate inline
-// versions of the compare-and-swap primitives.
-
-jboolean
-sun::misc::Unsafe::compareAndSwapInt (jobject obj, jlong offset,
- jint expect, jint update)
-{
- jint *addr = (jint *)((char *)obj + offset);
- return compareAndSwap (addr, expect, update);
-}
-
-jboolean
-sun::misc::Unsafe::compareAndSwapLong (jobject obj, jlong offset,
- jlong expect, jlong update)
-{
- volatile jlong *addr = (jlong*)((char *) obj + offset);
- return compareAndSwap (addr, expect, update);
-}
-
-jboolean
-sun::misc::Unsafe::compareAndSwapObject (jobject obj, jlong offset,
- jobject expect, jobject update)
-{
- jobject *addr = (jobject*)((char *) obj + offset);
- return compareAndSwap (addr, expect, update);
-}
-
-void
-sun::misc::Unsafe::putOrderedInt (jobject obj, jlong offset, jint value)
-{
- volatile jint *addr = (jint *) ((char *) obj + offset);
- *addr = value;
-}
-
-void
-sun::misc::Unsafe::putOrderedLong (jobject obj, jlong offset, jlong value)
-{
- volatile jlong *addr = (jlong *) ((char *) obj + offset);
- spinlock lock;
- *addr = value;
-}
-
-void
-sun::misc::Unsafe::putOrderedObject (jobject obj, jlong offset, jobject value)
-{
- volatile jobject *addr = (jobject *) ((char *) obj + offset);
- *addr = value;
-}
-
-void
-sun::misc::Unsafe::putIntVolatile (jobject obj, jlong offset, jint value)
-{
- write_barrier ();
- volatile jint *addr = (jint *) ((char *) obj + offset);
- *addr = value;
-}
-
-void
-sun::misc::Unsafe::putLongVolatile (jobject obj, jlong offset, jlong value)
-{
- volatile jlong *addr = (jlong *) ((char *) obj + offset);
- spinlock lock;
- *addr = value;
-}
-
-void
-sun::misc::Unsafe::putObjectVolatile (jobject obj, jlong offset, jobject value)
-{
- write_barrier ();
- volatile jobject *addr = (jobject *) ((char *) obj + offset);
- *addr = value;
-}
-
-#if 0 // FIXME
-void
-sun::misc::Unsafe::putInt (jobject obj, jlong offset, jint value)
-{
- jint *addr = (jint *) ((char *) obj + offset);
- *addr = value;
-}
-#endif
-
-void
-sun::misc::Unsafe::putLong (jobject obj, jlong offset, jlong value)
-{
- jlong *addr = (jlong *) ((char *) obj + offset);
- spinlock lock;
- *addr = value;
-}
-
-void
-sun::misc::Unsafe::putObject (jobject obj, jlong offset, jobject value)
-{
- jobject *addr = (jobject *) ((char *) obj + offset);
- *addr = value;
-}
-
-jint
-sun::misc::Unsafe::getIntVolatile (jobject obj, jlong offset)
-{
- volatile jint *addr = (jint *) ((char *) obj + offset);
- jint result = *addr;
- read_barrier ();
- return result;
-}
-
-jobject
-sun::misc::Unsafe::getObjectVolatile (jobject obj, jlong offset)
-{
- volatile jobject *addr = (jobject *) ((char *) obj + offset);
- jobject result = *addr;
- read_barrier ();
- return result;
-}
-
-jlong
-sun::misc::Unsafe::getLong (jobject obj, jlong offset)
-{
- jlong *addr = (jlong *) ((char *) obj + offset);
- spinlock lock;
- return *addr;
-}
-
-jlong
-sun::misc::Unsafe::getLongVolatile (jobject obj, jlong offset)
-{
- volatile jlong *addr = (jlong *) ((char *) obj + offset);
- spinlock lock;
- return *addr;
-}
-
-void
-sun::misc::Unsafe::unpark (::java::lang::Thread *thread)
-{
- natThread *nt = (natThread *) thread->data;
- nt->park_helper.unpark ();
-}
-
-void
-sun::misc::Unsafe::park (jboolean isAbsolute, jlong time)
-{
- using namespace ::java::lang;
- Thread *thread = Thread::currentThread();
- natThread *nt = (natThread *) thread->data;
- nt->park_helper.park (isAbsolute, time);
-}