1 #ifdef USE_PRAGMA_IDENT_HDR
   2 #pragma ident "@(#)barrierSet.inline.hpp        1.12 07/05/05 17:05:43 JVM"
   3 #endif
   4 /*
   5  * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
   6  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   7  *
   8  * This code is free software; you can redistribute it and/or modify it
   9  * under the terms of the GNU General Public License version 2 only, as
  10  * published by the Free Software Foundation.
  11  *
  12  * This code is distributed in the hope that it will be useful, but WITHOUT
  13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  14  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  15  * version 2 for more details (a copy is included in the LICENSE file that
  16  * accompanied this code).
  17  *
  18  * You should have received a copy of the GNU General Public License version
  19  * 2 along with this work; if not, write to the Free Software Foundation,
  20  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  21  *
  22  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
  23  * CA 95054 USA or visit www.sun.com if you need additional information or
  24  * have any questions.
  25  *  
  26  */
  27 
  28 // Inline functions of BarrierSet, which de-virtualize certain
  29 // performance-critical calls when when the barrier is the most common
  30 // card-table kind.
  31 
  32 void BarrierSet::write_ref_field_pre(void* field, oop new_val) {
  33   if (kind() == CardTableModRef) {
  34     ((CardTableModRefBS*)this)->inline_write_ref_field_pre(field, new_val);
  35   } else {
  36     write_ref_field_pre_work(field, new_val);
  37   }
  38 }
  39 
  40 void BarrierSet::write_ref_field(void* field, oop new_val) {
  41   if (kind() == CardTableModRef) {
  42     ((CardTableModRefBS*)this)->inline_write_ref_field(field, new_val);
  43   } else {
  44     write_ref_field_work(field, new_val);
  45   }
  46 }
  47 
  48 void BarrierSet::write_ref_array(MemRegion mr) {
  49   if (kind() == CardTableModRef) {
  50     ((CardTableModRefBS*)this)->inline_write_ref_array(mr);
  51   } else {
  52     write_ref_array_work(mr);
  53   }
  54 }
  55 
  56 void BarrierSet::write_region(MemRegion mr) {
  57   if (kind() == CardTableModRef) {
  58     ((CardTableModRefBS*)this)->inline_write_region(mr);
  59   } else {
  60     write_region_work(mr);
  61   }
  62 }