Package java.lang

Source Code of java.lang.NativeThread

/*
* $Id$
*
* Copyright (C) 2003-2014 JNode.org
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library 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 Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; If not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package java.lang;

import org.jnode.vm.scheduler.VmThread;
import org.jnode.vm.scheduler.VmProcessor;
import org.jnode.vm.scheduler.MonitorManager;
import org.jnode.vm.classmgr.VmIsolatedStatics;
import org.jnode.vm.VmSystem;

/**
*
*/
class NativeThread {
    private static void checkArg0(Object vmThread) {
        if (((VmThread) vmThread).hasJavaThread()) {
            throw new IllegalArgumentException("vmThread has already a java thread associated with it");
        }
    }

    private static Object createVmThread0(Thread instance, Thread current) {
        return VmProcessor.current().createThread(instance);
    }

    private static Object createVmThread1(Thread instance, Object isolatedStatics) {
        return VmProcessor.current().createThread((VmIsolatedStatics) isolatedStatics, instance);
    }

    private static void updateName0(Thread instance) {
        ((VmThread) instance.vmThread).updateName();
    }

    private static int countStackFrames(Thread instance) {
        return ((VmThread) instance.vmThread).countStackFrames();
    }

    private static void destroy(Thread instance) {
        ((VmThread) instance.vmThread).destroy();
    }

    private static final int getPriority(Thread instance) {
        return ((VmThread) instance.vmThread).getPriority();
    }

    private static void interrupt(Thread instance) {
        ((VmThread) instance.vmThread).interrupt();
    }

    private static boolean isInterrupted(Thread instance) {
        return ((VmThread) instance.vmThread).isInterrupted(false);
    }

    private static final boolean isAlive(Thread instance) {
        return ((VmThread) instance.vmThread).isAlive();
    }

    private static boolean isInterupted0(Thread instance) {
        return ((VmThread) instance.vmThread).isInterrupted(true);
    }

    private static long currentKernelMillis0() {
        return VmSystem.currentKernelMillis();
    }

    private static final void resume(Thread instance) {
        ((VmThread) instance.vmThread).resume();
    }

    private static void start0(Thread instance) {
        ((VmThread) instance.vmThread).start();
    }

    private static final void stop(Thread instance) {
        ((VmThread) instance.vmThread).stop(new ThreadDeath());
    }

    private static void stop0(Thread instance, Throwable t) {
        ((VmThread) instance.vmThread).stop(t);
    }

    private static final void suspend(Thread instance) {
        ((VmThread) instance.vmThread).suspend();
    }

    private static final void setPriority(Thread instance, int priority) {
        ((VmThread) instance.vmThread).setPriority(priority);
    }

    private static final boolean isRunning(Thread instance) {
        VmThread vmt = (VmThread) instance.vmThread;
        return vmt.isRunning() || vmt.isYielding();
    }

    private static boolean isWaiting(Thread instance) {
        return ((VmThread) instance.vmThread).isWaiting();
    }

    private static boolean isStopping0(Thread instance) {
        return ((VmThread) instance.vmThread).isStopping();
    }

    private static long getId(Thread instance) {
        return ((VmThread) instance.vmThread).getId();
    }

    private static StackTraceElement[] getStackTrace0(Thread instance) {
        return NativeThrowable.backTrace2stackTrace(VmThread.getStackTrace((VmThread) instance.vmThread));
    }

    private static Thread currentThread() {
        VmThread current = VmThread.currentThread();
        if (current != null) {
            return current.asThread();
        } else {
            return null;
        }
    }

    private static boolean interrupted() {
        VmThread current = VmThread.currentThread();
        if (current != null) {
            return current.isInterrupted(true);
        } else {
            return false;
        }
    }

    private static void yield() {
        VmThread.yield();
    }

    private static void sleep0(long ms, int ns) throws InterruptedException {
        VmThread.currentThread().sleep(ms, ns);
    }

    private static boolean holdsLock(Object obj) {
        return MonitorManager.holdsLock(obj);
    }

    private static void die0() {
        org.jnode.vm.Unsafe.die("Root ThreadGroup creation failure.");
    }
}
TOP

Related Classes of java.lang.NativeThread

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.