001 /*
002 * This file is part of the Jikes RVM project (http://jikesrvm.org).
003 *
004 * This file is licensed to You under the Eclipse Public License (EPL);
005 * You may not use this file except in compliance with the License. You
006 * may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/eclipse-1.0.php
009 *
010 * See the COPYRIGHT.txt file distributed with this work for information
011 * regarding copyright ownership.
012 */
013 package org.vmmagic.unboxed;
014
015 import org.vmmagic.Unboxed;
016
017 /**
018 * The object reference type is used by the runtime system and collector to
019 * represent a type that holds a reference to a single object.
020 * We use a separate type instead of the Java Object type for coding clarity,
021 * to make a clear distinction between objects the VM is written in, and
022 * objects that the VM is managing. No operations that can not be completed in
023 * pure Java should be allowed on Object.
024 */
025 @Unboxed
026 public final class ObjectReference {
027
028 /**
029 * The object field.
030 */
031 @SuppressWarnings("unused")
032 private Object data;
033
034 /**
035 * Convert from an object to a reference.
036 * @param obj The object
037 * @return The corresponding reference
038 */
039 public static ObjectReference fromObject(Object obj) {
040 return null;
041 }
042
043 /**
044 * Return a {@code null} reference
045 */
046 public static ObjectReference nullReference() {
047 return null;
048 }
049
050 /**
051 * Convert from an reference to an object. Note: this is a JikesRVM
052 * specific extension to vmmagic.
053 * @return The object
054 */
055 public Object toObject() {
056 return null;
057 }
058
059 /**
060 * Get a heap address for the object.
061 */
062 public Address toAddress() {
063 return null;
064 }
065
066 /**
067 * Is this a null reference?
068 */
069 public boolean isNull() {
070 return false;
071 }
072 }