annotate src/cpu/zero/vm/interpreterGenerator_zero.hpp @ 2346:e1162778c1c8

7009266: G1: assert(obj->is_oop_or_null(true )) failed: Error Summary: A referent object that is only weakly reachable at the start of concurrent marking but is re-attached to the strongly reachable object graph during marking may not be marked as live. This can cause the reference object to be processed prematurely and leave dangling pointers to the referent object. Implement a read barrier for the java.lang.ref.Reference::referent field by intrinsifying the Reference.get() method, and intercepting accesses though JNI, reflection, and Unsafe, so that when a non-null referent object is read it is also logged in an SATB buffer. Reviewed-by: kvn, iveresov, never, tonyp, dholmes
author johnc
date Thu, 07 Apr 2011 09:53:20 -0700
parents f95d63e2154a
children 1d7922586cf6
rev   line source
never@1010 1 /*
johnc@2346 2 * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
never@1010 3 * Copyright 2007 Red Hat, Inc.
never@1010 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
never@1010 5 *
never@1010 6 * This code is free software; you can redistribute it and/or modify it
never@1010 7 * under the terms of the GNU General Public License version 2 only, as
never@1010 8 * published by the Free Software Foundation.
never@1010 9 *
never@1010 10 * This code is distributed in the hope that it will be useful, but WITHOUT
never@1010 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
never@1010 12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
never@1010 13 * version 2 for more details (a copy is included in the LICENSE file that
never@1010 14 * accompanied this code).
never@1010 15 *
never@1010 16 * You should have received a copy of the GNU General Public License version
never@1010 17 * 2 along with this work; if not, write to the Free Software Foundation,
never@1010 18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
never@1010 19 *
trims@1472 20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
trims@1472 21 * or visit www.oracle.com if you need additional information or have any
trims@1472 22 * questions.
never@1010 23 *
never@1010 24 */
never@1010 25
stefank@1879 26 #ifndef CPU_ZERO_VM_INTERPRETERGENERATOR_ZERO_HPP
stefank@1879 27 #define CPU_ZERO_VM_INTERPRETERGENERATOR_ZERO_HPP
stefank@1879 28
never@1010 29 // Generation of Interpreter
never@1010 30 //
never@1010 31 friend class AbstractInterpreterGenerator;
never@1010 32
never@1010 33 private:
never@1010 34 address generate_normal_entry(bool synchronized);
never@1010 35 address generate_native_entry(bool synchronized);
never@1010 36 address generate_abstract_entry();
never@1010 37 address generate_math_entry(AbstractInterpreter::MethodKind kind);
never@1010 38 address generate_empty_entry();
never@1010 39 address generate_accessor_entry();
johnc@2346 40 address generate_Reference_get_entry();
never@1010 41 address generate_method_handle_entry();
stefank@1879 42
stefank@1879 43 #endif // CPU_ZERO_VM_INTERPRETERGENERATOR_ZERO_HPP