comparison src/share/vm/classfile/placeholders.hpp @ 7582:aefb345d3f5e

7199207: NPG: Crash in PlaceholderTable::verify after StackOverflow Summary: Reduce scope of placeholder table entries to improve cleanup Reviewed-by: dholmes, coleenp
author acorn
date Thu, 10 Jan 2013 17:38:20 -0500
parents 070d523b96a7
children
comparison
equal deleted inserted replaced
7581:97ee8abd6ab2 7582:aefb345d3f5e
1 /* 1 /*
2 * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2003, 2013, 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.
80 LOAD_SUPER = 2, // loading superclass for this class 80 LOAD_SUPER = 2, // loading superclass for this class
81 DEFINE_CLASS = 3 // find_or_define class 81 DEFINE_CLASS = 3 // find_or_define class
82 }; 82 };
83 83
84 // find_and_add returns probe pointer - old or new 84 // find_and_add returns probe pointer - old or new
85 // If no entry exists, add a placeholder entry and push SeenThread 85 // If no entry exists, add a placeholder entry and push SeenThread for classloadAction
86 // If entry exists, reuse entry and push SeenThread for classloadAction 86 // If entry exists, reuse entry and push SeenThread for classloadAction
87 PlaceholderEntry* find_and_add(int index, unsigned int hash, 87 PlaceholderEntry* find_and_add(int index, unsigned int hash,
88 Symbol* name, ClassLoaderData* loader_data, 88 Symbol* name, ClassLoaderData* loader_data,
89 classloadAction action, Symbol* supername, 89 classloadAction action, Symbol* supername,
90 Thread* thread); 90 Thread* thread);
91 91
92 void remove_entry(int index, unsigned int hash, 92 void remove_entry(int index, unsigned int hash,
93 Symbol* name, ClassLoaderData* loader_data); 93 Symbol* name, ClassLoaderData* loader_data);
94 94
95 // Remove placeholder information 95 // find_and_remove first removes SeenThread for classloadAction
96 // If all queues are empty and definer is null, remove the PlacheholderEntry completely
96 void find_and_remove(int index, unsigned int hash, 97 void find_and_remove(int index, unsigned int hash,
97 Symbol* name, ClassLoaderData* loader_data, Thread* thread); 98 Symbol* name, ClassLoaderData* loader_data,
99 classloadAction action, Thread* thread);
98 100
99 // GC support. 101 // GC support.
100 void classes_do(KlassClosure* f); 102 void classes_do(KlassClosure* f);
101 103
102 // JVMTI support 104 // JVMTI support