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.jikesrvm;
014    
015    import org.jikesrvm.objectmodel.TIBLayoutConstants;
016    import org.jikesrvm.objectmodel.ThinLockConstants;
017    
018    /**
019     * Constants describing VM object, stack, and register characteristics.
020     * Some of these constants are architecture-specific
021     * and some are (at the moment) architecture-neutral.
022     */
023    public interface Constants extends ThinLockConstants,         // architecture-neutral
024                                          TIBLayoutConstants,        // architecture-neutral
025                                          HeapLayoutConstants,       // architecture-neutral
026                                          SizeConstants             // 'semi-'architecture-neutral
027    {
028      /**
029       * For assertion checking things that should never happen.
030       */
031      boolean NOT_REACHED = false;
032    
033      /*
034       * Reflection uses an integer return from a function which logically
035       * returns a triple.  The values are packed in the integer return value
036       * by the following masks.
037       */
038    
039      int REFLECTION_GPRS_BITS = 5;
040      int REFLECTION_GPRS_MASK = (1 << REFLECTION_GPRS_BITS) - 1;
041      int REFLECTION_FPRS_BITS = 5;
042      int REFLECTION_FPRS_MASK = (1 << REFLECTION_FPRS_BITS) - 1;
043    
044    }