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.osr.bytecodes;
014    
015    import org.vmmagic.unboxed.Word;
016    
017    /**
018     * load a word constant on the stack
019     */
020    public class LoadWordConst extends PseudoBytecode {
021      private static final int bsize = 2 + BYTES_IN_ADDRESS;
022      private final Word wbits;
023    
024      public LoadWordConst(Word bits) {
025        this.wbits = bits;
026      }
027    
028      @Override
029      public byte[] getBytes() {
030        byte[] codes = initBytes(bsize, PSEUDO_LoadWordConst);
031        word2bytes(codes, 2, wbits);
032        return codes;
033      }
034    
035      @Override
036      public int getSize() {
037        return bsize;
038      }
039    
040      @Override
041      public int stackChanges() {
042        return +1;
043      }
044    
045      @Override
046      public String toString() {
047        return "LoadWord 0x" + Long.toHexString(wbits.toLong());
048      }
049    }