From: <dfr...@us...> - 2007-09-28 07:30:16
|
Revision: 13712 http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=13712&view=rev Author: dframpton-oss Date: 2007-09-28 00:30:13 -0700 (Fri, 28 Sep 2007) Log Message: ----------- Add a non-moving annotation Modified Paths: -------------- rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/classloader/VM_AnnotatedElement.java rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/classloader/VM_Type.java rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/classloader/VM_TypeReference.java rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/memorymanagers/mminterface/MM_Interface.java Added Paths: ----------- rvmroot/branches/RVM-265-ReadBarriers/vmmagic/src/org/vmmagic/pragma/NonMoving.java Modified: rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/classloader/VM_AnnotatedElement.java =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/classloader/VM_AnnotatedElement.java 2007-09-28 04:54:17 UTC (rev 13711) +++ rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/classloader/VM_AnnotatedElement.java 2007-09-28 07:30:13 UTC (rev 13712) @@ -296,4 +296,12 @@ public final boolean hasUntracedAnnotation() { return isAnnotationDeclared(VM_TypeReference.Untraced); } + + /** + * Return true if this element has a NonMoving annotation. + * @see org.vmmagic.pragma.Untraced + */ + public final boolean hasNonMovingAnnotation() { + return isAnnotationDeclared(VM_TypeReference.NonMoving); + } } Modified: rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/classloader/VM_Type.java =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/classloader/VM_Type.java 2007-09-28 04:54:17 UTC (rev 13711) +++ rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/classloader/VM_Type.java 2007-09-28 07:30:13 UTC (rev 13712) @@ -786,4 +786,11 @@ public final int getMMAllocator() { return mmAllocator; } + + /** + * Is this field a type that must never move? + */ + public boolean isNonMoving() { + return hasNonMovingAnnotation(); + } } Modified: rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/classloader/VM_TypeReference.java =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/classloader/VM_TypeReference.java 2007-09-28 04:54:17 UTC (rev 13711) +++ rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/classloader/VM_TypeReference.java 2007-09-28 07:30:13 UTC (rev 13712) @@ -159,6 +159,7 @@ public static final VM_TypeReference NoBoundsCheck = findOrCreate(org.vmmagic.pragma.NoBoundsCheck.class); public static final VM_TypeReference SpecializedMethodInvoke = findOrCreate(org.vmmagic.pragma.SpecializedMethodInvoke.class); public static final VM_TypeReference Untraced = findOrCreate(org.vmmagic.pragma.Untraced.class); + public static final VM_TypeReference NonMoving = findOrCreate(org.vmmagic.pragma.NonMoving.class); public static final VM_TypeReference VM_BaseAnnotation = findOrCreate(org.jikesrvm.classloader.VM_Annotation.BaseAnnotation.class); Modified: rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/memorymanagers/mminterface/MM_Interface.java =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/memorymanagers/mminterface/MM_Interface.java 2007-09-28 04:54:17 UTC (rev 13711) +++ rvmroot/branches/RVM-265-ReadBarriers/rvm/src/org/jikesrvm/memorymanagers/mminterface/MM_Interface.java 2007-09-28 07:30:13 UTC (rev 13712) @@ -582,6 +582,9 @@ if (type.isArrayType() && type.asArray().getElementType().isPrimitiveType()) { allocator = Plan.ALLOC_NON_REFERENCE; } + if(type.isNonMoving()) { + allocator = Plan.NON_MOVING; + } byte[] typeBA = type.getDescriptor().toByteArray(); if (Selected.Constraints.get().withGCspy()) { if (isPrefix("Lorg/mmtk/vm/gcspy/", typeBA) || isPrefix("[Lorg/mmtk/vm/gcspy/", typeBA)) { Added: rvmroot/branches/RVM-265-ReadBarriers/vmmagic/src/org/vmmagic/pragma/NonMoving.java =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/vmmagic/src/org/vmmagic/pragma/NonMoving.java (rev 0) +++ rvmroot/branches/RVM-265-ReadBarriers/vmmagic/src/org/vmmagic/pragma/NonMoving.java 2007-09-28 07:30:13 UTC (rev 13712) @@ -0,0 +1,28 @@ +/* + * This file is part of the Jikes RVM project (http://jikesrvm.org). + * + * This file is licensed to You under the Common Public License (CPL); + * 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/cpl1.0.php + * + * See the COPYRIGHT.txt file distributed with this work for information + * regarding copyright ownership. + */ +package org.vmmagic.pragma; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.ElementType; + +/** + * Use this annotation to mark types that must never move. This is intended for + * a very small set of VM internal types that are accessed without knowledge of the + * memory manager. This includes code, that is CALLed and fields that are loaded + * directly (such as Untraced fields). + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface NonMoving { } Property changes on: rvmroot/branches/RVM-265-ReadBarriers/vmmagic/src/org/vmmagic/pragma/NonMoving.java ___________________________________________________________________ Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |