src/share/vm/oops/klassPS.hpp

Print this page


   1 /*
   2  * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 #ifndef KLASS_PS_H
  25 #define KLASS_PS_H

  26 
  27   // Expands to Parallel Scavenge and Parallel Old declarations
  28 
  29 #ifndef SERIALGC
  30 #define PARALLEL_GC_DECLS \
  31   virtual void oop_push_contents(PSPromotionManager* pm, oop obj);          \
  32   /* Parallel Old GC support                                                \
  33                                                                             \
  34    The 2-arg version of oop_update_pointers is for objects that are         \
  35    known not to cross chunk boundaries.  The 4-arg version is for           \
  36    objects that do (or may) cross chunk boundaries; it updates only those   \
  37    oops that are in the region [beg_addr, end_addr).  */                    \
  38   virtual void oop_follow_contents(ParCompactionManager* cm, oop obj);      \
  39   virtual int  oop_update_pointers(ParCompactionManager* cm, oop obj);      \
  40   virtual int  oop_update_pointers(ParCompactionManager* cm, oop obj,       \
  41                                    HeapWord* beg_addr, HeapWord* end_addr);
  42 
  43 // Pure virtual version for klass.hpp
  44 #define PARALLEL_GC_DECLS_PV \
  45   virtual void oop_push_contents(PSPromotionManager* pm, oop obj) = 0;      \
  46   virtual void oop_follow_contents(ParCompactionManager* cm, oop obj) = 0;  \
  47   virtual int  oop_update_pointers(ParCompactionManager* cm, oop obj) = 0;  \
  48   virtual int  oop_update_pointers(ParCompactionManager* cm, oop obj,       \
  49                                    HeapWord* beg_addr, HeapWord* end_addr) = 0;
  50 #else  // SERIALGC
  51 #define PARALLEL_GC_DECLS
  52 #define PARALLEL_GC_DECLS_PV
  53 #endif // SERIALGC
  54 
  55 #endif // KLASS_PS_H
   1 /*
   2  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_VM_OOPS_KLASSPS_HPP
  26 #define SHARE_VM_OOPS_KLASSPS_HPP
  27 
  28   // Expands to Parallel Scavenge and Parallel Old declarations
  29 
  30 #ifndef SERIALGC
  31 #define PARALLEL_GC_DECLS \
  32   virtual void oop_push_contents(PSPromotionManager* pm, oop obj);          \
  33   /* Parallel Old GC support                                                \
  34                                                                             \
  35    The 2-arg version of oop_update_pointers is for objects that are         \
  36    known not to cross chunk boundaries.  The 4-arg version is for           \
  37    objects that do (or may) cross chunk boundaries; it updates only those   \
  38    oops that are in the region [beg_addr, end_addr).  */                    \
  39   virtual void oop_follow_contents(ParCompactionManager* cm, oop obj);      \
  40   virtual int  oop_update_pointers(ParCompactionManager* cm, oop obj);      \
  41   virtual int  oop_update_pointers(ParCompactionManager* cm, oop obj,       \
  42                                    HeapWord* beg_addr, HeapWord* end_addr);
  43 
  44 // Pure virtual version for klass.hpp
  45 #define PARALLEL_GC_DECLS_PV \
  46   virtual void oop_push_contents(PSPromotionManager* pm, oop obj) = 0;      \
  47   virtual void oop_follow_contents(ParCompactionManager* cm, oop obj) = 0;  \
  48   virtual int  oop_update_pointers(ParCompactionManager* cm, oop obj) = 0;  \
  49   virtual int  oop_update_pointers(ParCompactionManager* cm, oop obj,       \
  50                                    HeapWord* beg_addr, HeapWord* end_addr) = 0;
  51 #else  // SERIALGC
  52 #define PARALLEL_GC_DECLS
  53 #define PARALLEL_GC_DECLS_PV
  54 #endif // SERIALGC
  55 
  56 #endif // SHARE_VM_OOPS_KLASSPS_HPP