8185103: TestThreadDumpMonitorContention.java crashed due to SIGSEGV in G1SATBCardTableModRefBS::write_ref_field_pre_work
Summary: Ensure that a Klass's mirror is set before putting the Klass on the fixup_module_field_list
Reviewed-by: coleenp, dholmes, gtriantafill
#// Usage: jjs -cp dom_linker.jar -scripting dom_linker_gutenberg.js/* * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * - Neither the name of Oracle nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */// This script depends on DOM Element dynalink linker!// Without that linker, this script will fail to run!// Simple example that demonstrates reading XML Rss feed// to generate a HTML file from script and show it by browser.// Uses XML DOM parser along with DOM element pluggable dynalink linker// for ease of navigation of DOM (child) elements by name.// Java classes usedvar DocBuilderFac = Java.type("javax.xml.parsers.DocumentBuilderFactory");var Node = Java.type("org.w3c.dom.Node");var File = Java.type("java.io.File");var FileWriter = Java.type("java.io.FileWriter");var PrintWriter = Java.type("java.io.PrintWriter");// parse XML from uri and return Documentfunction parseXML(uri) { var docBuilder = DocBuilderFac.newInstance().newDocumentBuilder(); return docBuilder["parse(java.lang.String)"](uri);}// generate HTML using here-doc and string interpolationfunction getBooksHtml() { var doc = parseXML("http://www.gutenberg.org/cache/epub/feeds/today.rss"); // wrap document root Element as script convenient object var rss = doc.documentElement; var str = <<HEAD<html><title>${rss._channel._title._}</title><body><h1>${rss._channel._description._}</h1><p>Published on ${rss._channel._pubDate._}</p>HEAD var items = rss._channel._item; for each (var i in items) { str += <<LIST<dl><dt><a href="${i._link._}">${i._title._}</a></dt><dd>${i._description._}</dd></dl>LIST } str += <<END</body></html>END return str;}// write the string to the given filefunction writeTo(file, str) { var w = new PrintWriter(new FileWriter(file)); try { w.print(str); } finally { w.close(); }}// generate books HTMLvar str = getBooksHtml();// write to file. __DIR__ is directory where// this script is stored.var file = new File(__DIR__ + "books.html");writeTo(file, str);// show it by desktop browsertry { var Desktop = Java.type("java.awt.Desktop"); Desktop.desktop.browse(file.toURI());} catch (e) { print(e);}