hotspot/src/share/vm/gc_implementation/shared/markSweep.inline.hpp
changeset 11178 8318f84ac604
parent 7397 5b173b4ca846
child 13728 882756847a04
equal deleted inserted replaced
11177:40197ffbf423 11178:8318f84ac604
     1 /*
     1 /*
     2  * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     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
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    61     }
    61     }
    62   }
    62   }
    63   follow_stack();
    63   follow_stack();
    64 }
    64 }
    65 
    65 
    66 template <class T> inline void MarkSweep::mark_and_follow(T* p) {
       
    67 //  assert(Universe::heap()->is_in_reserved(p), "should be in object space");
       
    68   T heap_oop = oopDesc::load_heap_oop(p);
       
    69   if (!oopDesc::is_null(heap_oop)) {
       
    70     oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
       
    71     if (!obj->mark()->is_marked()) {
       
    72       mark_object(obj);
       
    73       obj->follow_contents();
       
    74     }
       
    75   }
       
    76 }
       
    77 
       
    78 template <class T> inline void MarkSweep::mark_and_push(T* p) {
    66 template <class T> inline void MarkSweep::mark_and_push(T* p) {
    79 //  assert(Universe::heap()->is_in_reserved(p), "should be in object space");
    67 //  assert(Universe::heap()->is_in_reserved(p), "should be in object space");
    80   T heap_oop = oopDesc::load_heap_oop(p);
    68   T heap_oop = oopDesc::load_heap_oop(p);
    81   if (!oopDesc::is_null(heap_oop)) {
    69   if (!oopDesc::is_null(heap_oop)) {
    82     oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
    70     oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);