/* * This file is part of the Jikes RVM project (http://jikesrvm.org). * * This file is licensed to You under the Eclipse Public License (EPL); * You may not use this file except in compliance with the License. You * may obtain a copy of the License at * * http://www.opensource.org/licenses/eclipse-1.0.php * * See the COPYRIGHT.txt file distributed with this work for information * regarding copyright ownership. */ package java.lang; import java.security.ProtectionDomain; import java.lang.instrument.Instrumentation; import org.jikesrvm.classloader.RVMType; import org.vmmagic.pragma.*; import org.jikesrvm.scheduler.RVMThread; /** * Library support interface of Jikes RVM */ public class JikesRVMSupport { /** * Call the Object finalize method on the given object */ public static void invokeFinalize(Object o) throws Throwable { o.finalize(); } public static void initializeInstrumentation(Instrumentation instrumenter) { throw new Error("TODO"); } public static Class<?>[] getAllLoadedClasses() { throw new Error("TODO"); } public static Class<?>[] getInitiatedClasses(ClassLoader classLoader) { throw new Error("TODO"); } public static Class<?> createClass(RVMType type) { return Class.create(type); } public static Class<?> createClass(RVMType type, ProtectionDomain pd) { Class<?> c = Class.create(type); setClassProtectionDomain(c, pd); return c; } public static RVMType getTypeForClass(Class<?> c) { return c.type; } public static void setClassProtectionDomain(Class<?> c, ProtectionDomain pd) { c.pd = pd; } /*** * String stuff * */ @Uninterruptible public static char[] getBackingCharArray(String str) { return str.getValue(); } @Uninterruptible public static int getStringLength(String str) { return str.length(); } @Uninterruptible public static int getStringOffset(String str) { // TODO - Harmony return str.offset; } public static String newStringWithoutCopy(char[] data, int offset, int count) { // TODO - Harmony doesn't have a backdoor for not making a copy return new String(data, offset, count); } /*** * Thread stuff * */ public static Thread createThread(RVMThread vmdata, String myName) { return new Thread(vmdata, myName); } public static RVMThread getThread(Thread thread) { throw new Error("TODO"); } public static void threadDied(Thread thread) { // TODO - Harmony } public static Throwable getStillBorn(Thread thread) { return null; } public static void setStillBorn(Thread thread, Throwable stillborn) { throw new Error("TODO"); } /*** * Enum stuff */ @Uninterruptible public static int getEnumOrdinal(Enum<?> e) { // TODO: make e.ordinal() non-uninterruptible return e.ordinal(); } @Uninterruptible public static String getEnumName(Enum<?> e) { // TODO: make Enum.name() non-uninterruptible return e.name(); } }