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.mmtk.policy;
014    
015    import org.mmtk.utility.alloc.SegregatedFreeListLocal;
016    import org.mmtk.utility.Constants;
017    
018    import org.vmmagic.pragma.*;
019    
020    /**
021     * This class implements unsynchronized (local) elements of an
022     * explicitly managed collector.  Allocation is via the segregated free list
023     * (@see org.mmtk.utility.alloc.SegregatedFreeList).<p>
024     *
025     * @see org.mmtk.utility.alloc.SegregatedFreeList
026     * @see ExplicitFreeListSpace
027     */
028    @Uninterruptible
029    public final class ExplicitFreeListLocal extends SegregatedFreeListLocal<ExplicitFreeListSpace> implements Constants {
030    
031      /****************************************************************************
032       *
033       * Class variables
034       */
035    
036      /****************************************************************************
037       *
038       * Instance variables
039       */
040    
041      /****************************************************************************
042       *
043       * Initialization
044       */
045    
046      /**
047       * Constructor
048       *
049       * @param space The rc space to which this allocator
050       * instances is bound.
051       */
052      public ExplicitFreeListLocal(ExplicitFreeListSpace space) {
053        super(space);
054      }
055    
056      /****************************************************************************
057       *
058       * Allocation
059       */
060    
061      /****************************************************************************
062       *
063       * Collection
064       */
065    
066      /**
067       * Prepare for a collection. If paranoid, perform a sanity check.
068       */
069      public void prepare() {
070        flush();
071      }
072    
073      /**
074       * Finish up after a collection.
075       */
076      public void release() {}
077    }