Mercurial > hg > truffle
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 |