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.utility.deque;
014
015 import org.mmtk.utility.Constants;
016
017 import org.vmmagic.unboxed.*;
018 import org.vmmagic.pragma.*;
019
020 /**
021 * This supports <i>unsynchronized</i> insertion of write buffer values.
022 */
023 @Uninterruptible public class WriteBuffer extends LocalSSB
024 implements Constants {
025
026 /****************************************************************************
027 *
028 * Public instance methods
029 */
030
031 /**
032 * Constructor
033 *
034 * @param queue The shared queue to which this local ssb will append
035 * its buffers (when full or flushed).
036 */
037 public WriteBuffer(SharedDeque queue) {
038 super(queue);
039 }
040
041 /**
042 * Insert a value to be remembered into the write buffer.
043 *
044 * @param addr the value to be inserted into the write buffer
045 */
046 @NoInline
047 public final void insert(Address addr) {
048 checkTailInsert(1);
049 uncheckedTailInsert(addr);
050 }
051 }