You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by na...@apache.org on 2007/03/13 13:17:45 UTC
svn commit: r517663 [11/14] - in /harmony/standard/site: docs/
docs/documentation/ docs/subcomponents/classlibrary/
docs/subcomponents/drlvm/ xdocs/ xdocs/documentation/ xdocs/stylesheets/
xdocs/subcomponents/classlibrary/ xdocs/subcomponents/drlvm/
Modified: harmony/standard/site/xdocs/stylesheets/site_printable.vsl
URL: http://svn.apache.org/viewvc/harmony/standard/site/xdocs/stylesheets/site_printable.vsl?view=diff&rev=517663&r1=517662&r2=517663
==============================================================================
--- harmony/standard/site/xdocs/stylesheets/site_printable.vsl (original)
+++ harmony/standard/site/xdocs/stylesheets/site_printable.vsl Tue Mar 13 05:17:43 2007
@@ -1,260 +1,260 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
-<!-- Content Stylesheet for Site -->
-
- ## Defined variables
- #set ($bodybg = "#ffffff")
- #set ($bodyfg = "#000000")
- #set ($bodylink = "#525D76")
- #set ($bannerbg = "#525D76")
- #set ($bannerfg = "#ffffff")
- #set ($subbannerbg = "#828DA6")
- #set ($subbannerfg = "#ffffff")
- #set ($tablethbg = "#039acc")
- #set ($tabletdbg = "#a0ddf0")
-
-<!-- start the processing -->
-#document()
-<!-- end the processing -->
-
-## This is where the macro's live
-
-#macro ( table $table)
-<table>
- #foreach ( $items in $table.getChildren() )
- #if ($items.getName().equals("tr"))
- #tr ($items)
- #end
- #end
-</table>
-#end
-
-#macro ( tr $tr)
-<tr>
- #foreach ( $items in $tr.getChildren() )
- #if ($items.getName().equals("td"))
- #td ($items)
- #elseif ($items.getName().equals("th"))
- #th ($items)
- #end
- #end
-</tr>
-#end
-
-#macro ( td $value)
-#if ($value.getAttributeValue("colspan"))
-#set ($colspan = $value.getAttributeValue("colspan"))
-#end
-#if ($value.getAttributeValue("rowspan"))
-#set ($rowspan = $value.getAttributeValue("rowspan"))
-#end
-<td bgcolor="$tabletdbg" colspan="$!colspan" rowspan="$!rowspan" valign="top" align="left">
- <font color="#000000" size="-1" face="arial,helvetica,sanserif">
- #if ($value.getText().length() != 0 || $value.hasChildren())
- $value.getContent()
- #else
-
- #end
- </font>
-</td>
-#end
-
-#macro ( th $value)
-#if ($value.getAttributeValue("colspan"))
-#set ($colspan = $value.getAttributeValue("colspan"))
-#end
-#if ($value.getAttributeValue("rowspan"))
-#set ($rowspan = $value.getAttributeValue("rowspan"))
-#end
-<td bgcolor="$tablethbg" colspan="$!colspan" rowspan="$!rowspan" valign="top" align="left">
- <font color="#000000" size="-1" face="arial,helvetica,sanserif">
- #if ($value.getText().length() != 0 || $value.hasChildren())
- $value.getContent()
- #else
-
- #end
- </font>
-</td>
-#end
-
-#macro ( projectanchor $name $value )
-#if ($value.startsWith("http://"))
- • <a href="$value">$name</a>
-#elseif ($value.startsWith("/site"))
- • <a href="http://jakarta.apache.org$value">$name</a>
-#else
- • <a href="$relativePath$value">$name</a>
-#end
-#end
-
-#macro ( metaauthor $author $email )
- <meta name="author" value="$author">
- <meta name="email" value="$email">
-#end
-
-#macro ( image $value )
-#if ($value.getAttributeValue("width"))
-#set ($width=$value.getAttributeValue("width"))
-#end
-#if ($value.getAttributeValue("height"))
-#set ($height=$value.getAttributeValue("height"))
-#end
-#if ($value.getAttributeValue("align"))
-#set ($align=$value.getAttributeValue("align"))
-#end
-<img src="$relativePath$value.getAttributeValue("src")" width="$!width" height="$!height" align="$!align">
-#end
-
-#macro ( source $value)
- <div align="left">
- <font size="2"><pre>$escape.getText($value.getText())</pre></font>
- </div>
-#end
-
-#macro ( subsection $subsection)
- <table border="0" cellspacing="0" cellpadding="2" width="100%">
- <tr><td bgcolor="$subbannerbg">
- <font color="$subbannerfg" face="arial,helvetica,sanserif">
- <a name="$subsection.getAttributeValue("name")"><strong>$subsection.getAttributeValue("name")</strong></a>
- </font>
- </td></tr>
- <tr><td><br/></td></tr>
- <tr><td>
- <blockquote>
- #foreach ( $items in $subsection.getChildren() )
- #if ($items.getName().equals("img"))
- #image ($items)
- #elseif ($items.getName().equals("source"))
- #source ($items)
- #elseif ($items.getName().equals("table"))
- #table ($items)
- #else
- $items
- #end
- #end
- </blockquote>
- </td></tr>
- <tr><td><br/></td></tr>
- </table>
-#end
-
-#macro ( section $section)
- <table border="0" cellspacing="0" cellpadding="2" width="100%">
- <tr><td bgcolor="$bannerbg">
- <font color="$bannerfg" face="arial,helvetica,sanserif">
- <a name="$section.getAttributeValue("name")"><strong>$section.getAttributeValue("name")</strong></a>
- </font>
- </td></tr>
- <tr><td><br/></td></tr>
- <tr><td>
- <!--<blockquote>-->
- #foreach ( $items in $section.getChildren() )
- #if ($items.getName().equals("img"))
- #image ($items)
- #elseif ($items.getName().equals("source"))
- #source ($items)
- #elseif ($items.getName().equals("table"))
- #table ($items)
- #elseif ($items.getName().equals("subsection"))
- #subsection ($items)
- #else
- $items
- #end
- #end
- <!--</blockquote>-->
- </p>
- </td></tr>
- <tr><td><br/></td></tr>
- </table>
-#end
-
-#macro (getProjectImage)
-#if ($project.getChild("logo"))
-<td align="left">
-<a href="http://jakarta.apache.org"><img src="http://jakarta.apache.org/images/jakarta-logo.gif" border="0"/></a>
-
-#set ( $logoString = $project.getChild("logo").getAttributeValue("href") )
-#if ( $logoString.startsWith("/") )
-<a href="$project.getAttributeValue("href")"><img src="$relativePath$logoString" alt="$project.getChild("logo").getText()" border="0"/></a>
-#else
-<a href="$project.getAttributeValue("href")"><img src="$relativePath/$logoString" alt="$project.getChild("logo").getText()" border="0"/></a>
-#end
-</td>
-#else
-<td>
-<a href="http://jakarta.apache.org"><img src="http://jakarta.apache.org/images/jakarta-logo.gif" align="left" border="0"/></a>
-</td>
-#end
-#end
-
-#macro ( makeHorizontalProject )
- #set ($menus = $project.getChild("body").getChildren("menu"))
- <table cellspacing="4">
- #foreach ( $menu in $menus )
- <tr><td>
- <strong>$menu.getAttributeValue("name")</strong>
- </td><td>
- #foreach ( $item in $menu.getChildren() )
- #set ($name = $item.getAttributeValue("name"))
- #projectanchor($name $item.getAttributeValue("href"))
- #end
- </td>
- </tr>
- #end
- </table>
-#end
-
-#macro (document)
- <!-- ====================================================================== -->
- <!-- Main Page Section -->
- <!-- ====================================================================== -->
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
-
- #set ($authors = $root.getChild("properties").getChildren("author"))
- #foreach ( $au in $authors )
- #metaauthor ( $au.getText() $au.getAttributeValue("email") )
- #end
-
- <title>$project.getChild("title").getText() - $root.getChild("properties").getChild("title").getText()</title>
- </head>
-
- <body bgcolor="$bodybg" text="$bodyfg" link="$bodylink">
- <table border="0" width="100%" cellspacing="0">
- <!-- TOP IMAGE -->
- <tr>
- #getProjectImage()
- </tr>
- </table>
- <table border="0" width="100%" cellspacing="4">
- <tr><td>
- <hr noshade="" size="1"/>
- </td></tr>
- <tr>
- <td align="left" valign="top">
- #set ($allSections = $root.getChild("body").getChildren("section"))
- #foreach ( $section in $allSections )
- #section ($section)
- #end
- </td>
- </tr>
- <tr><td>
- <hr noshade="" size="1"/>
- </td></tr>
- <tr><td>
- <!-- FOOT Navigation -->
- #makeHorizontalProject ()
- <!-- FOOTER -->
- <tr><td>
- <hr noshade="" size="1"/>
- </td></tr>
- <tr><td>
- <div align="center"><font color="$bodylink" size="-1"><em>
- Copyright © 1999-2004, Apache Software Foundation
- </em></font></div>
- </td></tr>
- </table>
- </body>
- </html>
-#end
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!-- Content Stylesheet for Site -->
+
+ ## Defined variables
+ #set ($bodybg = "#ffffff")
+ #set ($bodyfg = "#000000")
+ #set ($bodylink = "#525D76")
+ #set ($bannerbg = "#525D76")
+ #set ($bannerfg = "#ffffff")
+ #set ($subbannerbg = "#828DA6")
+ #set ($subbannerfg = "#ffffff")
+ #set ($tablethbg = "#039acc")
+ #set ($tabletdbg = "#a0ddf0")
+
+<!-- start the processing -->
+#document()
+<!-- end the processing -->
+
+## This is where the macro's live
+
+#macro ( table $table)
+<table>
+ #foreach ( $items in $table.getChildren() )
+ #if ($items.getName().equals("tr"))
+ #tr ($items)
+ #end
+ #end
+</table>
+#end
+
+#macro ( tr $tr)
+<tr>
+ #foreach ( $items in $tr.getChildren() )
+ #if ($items.getName().equals("td"))
+ #td ($items)
+ #elseif ($items.getName().equals("th"))
+ #th ($items)
+ #end
+ #end
+</tr>
+#end
+
+#macro ( td $value)
+#if ($value.getAttributeValue("colspan"))
+#set ($colspan = $value.getAttributeValue("colspan"))
+#end
+#if ($value.getAttributeValue("rowspan"))
+#set ($rowspan = $value.getAttributeValue("rowspan"))
+#end
+<td bgcolor="$tabletdbg" colspan="$!colspan" rowspan="$!rowspan" valign="top" align="left">
+ <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+ #if ($value.getText().length() != 0 || $value.hasChildren())
+ $value.getContent()
+ #else
+
+ #end
+ </font>
+</td>
+#end
+
+#macro ( th $value)
+#if ($value.getAttributeValue("colspan"))
+#set ($colspan = $value.getAttributeValue("colspan"))
+#end
+#if ($value.getAttributeValue("rowspan"))
+#set ($rowspan = $value.getAttributeValue("rowspan"))
+#end
+<td bgcolor="$tablethbg" colspan="$!colspan" rowspan="$!rowspan" valign="top" align="left">
+ <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+ #if ($value.getText().length() != 0 || $value.hasChildren())
+ $value.getContent()
+ #else
+
+ #end
+ </font>
+</td>
+#end
+
+#macro ( projectanchor $name $value )
+#if ($value.startsWith("http://"))
+ • <a href="$value">$name</a>
+#elseif ($value.startsWith("/site"))
+ • <a href="http://jakarta.apache.org$value">$name</a>
+#else
+ • <a href="$relativePath$value">$name</a>
+#end
+#end
+
+#macro ( metaauthor $author $email )
+ <meta name="author" value="$author">
+ <meta name="email" value="$email">
+#end
+
+#macro ( image $value )
+#if ($value.getAttributeValue("width"))
+#set ($width=$value.getAttributeValue("width"))
+#end
+#if ($value.getAttributeValue("height"))
+#set ($height=$value.getAttributeValue("height"))
+#end
+#if ($value.getAttributeValue("align"))
+#set ($align=$value.getAttributeValue("align"))
+#end
+<img src="$relativePath$value.getAttributeValue("src")" width="$!width" height="$!height" align="$!align">
+#end
+
+#macro ( source $value)
+ <div align="left">
+ <font size="2"><pre>$escape.getText($value.getText())</pre></font>
+ </div>
+#end
+
+#macro ( subsection $subsection)
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
+ <tr><td bgcolor="$subbannerbg">
+ <font color="$subbannerfg" face="arial,helvetica,sanserif">
+ <a name="$subsection.getAttributeValue("name")"><strong>$subsection.getAttributeValue("name")</strong></a>
+ </font>
+ </td></tr>
+ <tr><td><br/></td></tr>
+ <tr><td>
+ <blockquote>
+ #foreach ( $items in $subsection.getChildren() )
+ #if ($items.getName().equals("img"))
+ #image ($items)
+ #elseif ($items.getName().equals("source"))
+ #source ($items)
+ #elseif ($items.getName().equals("table"))
+ #table ($items)
+ #else
+ $items
+ #end
+ #end
+ </blockquote>
+ </td></tr>
+ <tr><td><br/></td></tr>
+ </table>
+#end
+
+#macro ( section $section)
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
+ <tr><td bgcolor="$bannerbg">
+ <font color="$bannerfg" face="arial,helvetica,sanserif">
+ <a name="$section.getAttributeValue("name")"><strong>$section.getAttributeValue("name")</strong></a>
+ </font>
+ </td></tr>
+ <tr><td><br/></td></tr>
+ <tr><td>
+ <!--<blockquote>-->
+ #foreach ( $items in $section.getChildren() )
+ #if ($items.getName().equals("img"))
+ #image ($items)
+ #elseif ($items.getName().equals("source"))
+ #source ($items)
+ #elseif ($items.getName().equals("table"))
+ #table ($items)
+ #elseif ($items.getName().equals("subsection"))
+ #subsection ($items)
+ #else
+ $items
+ #end
+ #end
+ <!--</blockquote>-->
+ </p>
+ </td></tr>
+ <tr><td><br/></td></tr>
+ </table>
+#end
+
+#macro (getProjectImage)
+#if ($project.getChild("logo"))
+<td align="left">
+<a href="http://jakarta.apache.org"><img src="http://jakarta.apache.org/images/jakarta-logo.gif" border="0"/></a>
+
+#set ( $logoString = $project.getChild("logo").getAttributeValue("href") )
+#if ( $logoString.startsWith("/") )
+<a href="$project.getAttributeValue("href")"><img src="$relativePath$logoString" alt="$project.getChild("logo").getText()" border="0"/></a>
+#else
+<a href="$project.getAttributeValue("href")"><img src="$relativePath/$logoString" alt="$project.getChild("logo").getText()" border="0"/></a>
+#end
+</td>
+#else
+<td>
+<a href="http://jakarta.apache.org"><img src="http://jakarta.apache.org/images/jakarta-logo.gif" align="left" border="0"/></a>
+</td>
+#end
+#end
+
+#macro ( makeHorizontalProject )
+ #set ($menus = $project.getChild("body").getChildren("menu"))
+ <table cellspacing="4">
+ #foreach ( $menu in $menus )
+ <tr><td>
+ <strong>$menu.getAttributeValue("name")</strong>
+ </td><td>
+ #foreach ( $item in $menu.getChildren() )
+ #set ($name = $item.getAttributeValue("name"))
+ #projectanchor($name $item.getAttributeValue("href"))
+ #end
+ </td>
+ </tr>
+ #end
+ </table>
+#end
+
+#macro (document)
+ <!-- ====================================================================== -->
+ <!-- Main Page Section -->
+ <!-- ====================================================================== -->
+ <html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+
+ #set ($authors = $root.getChild("properties").getChildren("author"))
+ #foreach ( $au in $authors )
+ #metaauthor ( $au.getText() $au.getAttributeValue("email") )
+ #end
+
+ <title>$project.getChild("title").getText() - $root.getChild("properties").getChild("title").getText()</title>
+ </head>
+
+ <body bgcolor="$bodybg" text="$bodyfg" link="$bodylink">
+ <table border="0" width="100%" cellspacing="0">
+ <!-- TOP IMAGE -->
+ <tr>
+ #getProjectImage()
+ </tr>
+ </table>
+ <table border="0" width="100%" cellspacing="4">
+ <tr><td>
+ <hr noshade="" size="1"/>
+ </td></tr>
+ <tr>
+ <td align="left" valign="top">
+ #set ($allSections = $root.getChild("body").getChildren("section"))
+ #foreach ( $section in $allSections )
+ #section ($section)
+ #end
+ </td>
+ </tr>
+ <tr><td>
+ <hr noshade="" size="1"/>
+ </td></tr>
+ <tr><td>
+ <!-- FOOT Navigation -->
+ #makeHorizontalProject ()
+ <!-- FOOTER -->
+ <tr><td>
+ <hr noshade="" size="1"/>
+ </td></tr>
+ <tr><td>
+ <div align="center"><font color="$bodylink" size="-1"><em>
+ Copyright © 1999-2004, Apache Software Foundation
+ </em></font></div>
+ </td></tr>
+ </table>
+ </body>
+ </html>
+#end
Modified: harmony/standard/site/xdocs/subcomponents/classlibrary/rmi_provider.xml
URL: http://svn.apache.org/viewvc/harmony/standard/site/xdocs/subcomponents/classlibrary/rmi_provider.xml?view=diff&rev=517663&r1=517662&r2=517663
==============================================================================
--- harmony/standard/site/xdocs/subcomponents/classlibrary/rmi_provider.xml (original)
+++ harmony/standard/site/xdocs/subcomponents/classlibrary/rmi_provider.xml Tue Mar 13 05:17:43 2007
@@ -1,30 +1,30 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<document>
-
- <properties>
- <title>RMI Provider</title>
- <author email="dev@harmony.apache.org">Harmony Documentation Team</author>
- </properties>
-
- <body>
- <docinclude name="subcomponents/classlibrary/RMIprovider.html"/>
- </body>
-</document>
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<document>
+
+ <properties>
+ <title>RMI Provider</title>
+ <author email="dev@harmony.apache.org">Harmony Documentation Team</author>
+ </properties>
+
+ <body>
+ <docinclude name="subcomponents/classlibrary/RMIprovider.html"/>
+ </body>
+</document>
Modified: harmony/standard/site/xdocs/subcomponents/drlvm/DoxygenStart.xml
URL: http://svn.apache.org/viewvc/harmony/standard/site/xdocs/subcomponents/drlvm/DoxygenStart.xml?view=diff&rev=517663&r1=517662&r2=517663
==============================================================================
--- harmony/standard/site/xdocs/subcomponents/drlvm/DoxygenStart.xml (original)
+++ harmony/standard/site/xdocs/subcomponents/drlvm/DoxygenStart.xml Tue Mar 13 05:17:43 2007
@@ -1,95 +1,95 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
- <!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<document>
-
- <properties>
- <title>Apache Harmony DRL Virtual Machine Doc Index</title>
- <author email="dev@harmony.apache.org">Harmony Documentation Team</author>
- </properties>
-
- <body>
-
-<section name="DRLVM Source Code Generated Documentation Index">
-<p>This is a landing page for Doxygen source code reference generated automatically from interface headers.
-Each link should lead to a documentation bundle generated from a component-related set of header files.
-The purpose of these documents is to provide a complete reference of available code in DRLVM interfaces.
-Because the code base is being actively developed, not all interfaces are well-documented at this point, so that
-you can find some interfaces not documented. Everyone's welcome to contribute to this initiative.
-</p>
-<p>
-The documentation bundles were generated automatically and posted on the site server. You can regenerate the docs
-from your source files locally, as described in section <a href="#Regenerating the Reference">Regenerating the Reference</a>.
-</p>
- <subsection name="Doxygen API Reference for DRLVM Sources">
- <p>This is a list of links to generated source code documentation bundles.
- </p>
- <ul>
- <li><a href="doxygen/intf/html/index.html">DRLVM Interfaces</a> - the high-level interface headers</li>
- <li><a href="doxygen/em/html/index.html">Execution Manager</a></li>
- <li>Garbage Collectors:
- <ul>
- <li><a href="doxygen/gc_cc/html/index.html">Copying/Compacting Garbage Collector</a></li>
- <li><a href="doxygen/gc_gen/html/index.html">Generational Garbage Collector</a></li>
- <li><a href="doxygen/gcv4/html/index.html">Obsolete v.4 Garbage Collector</a></li>
- </ul></li>
- <li><a href="doxygen/interpreter/html/index.html">Interpreter</a></li>
- <li><a href="doxygen/jitrino/html/index.html">Jitrino</a>- the just-in-time compiler </li>
- <li><a href="doxygen/port/html/index.html">Porting Layer</a> - the extensions to APR</li>
- <li><a href="doxygen/thread/html/index.html">Thread Manager</a></li>
- <li><a href="doxygen/vmcore/html/index.html">VM Infrastructure</a> - the VM core component interfaces</li>
- <li><a href="doxygen/vmi/html/index.html">Class Library Support</a> - the VMI interface</li>
- <li><a href="doxygen/vmstart/html/index.html">Component Manager</a></li>
- <li><a href="doxygen/tests/html/index.html">DTLVM Tests</a></li>
- <li><a href="doxygen/drlvm/html/index.html">All DRLVM</a> - the big bundle with all of the above</li>
- </ul>
- </subsection>
-
- <subsection name="Other Useful DRLVM documents">
- <ul>
- <li><a href="index.html" target="_blank">DRLVM
- website documentation page</a> with links to all DRLVM documents</li>
- <li><a href="http://wiki.apache.org/harmony/DRLVM_Documentation_Quality">Status
- metrics for Doxygen API reference</a>, Wiki page with metrics that show improvement metrics for the reference </li>
- </ul>
- </subsection>
-</section>
-<section name="Regenerating the Reference">
-<p>
-Follow these instructions to regenerate reference materials analogous to those posted on the website. You can also adjust
-the list of files to include into a specific documentation bundle and configure Doxygen to produce a different output,
-see section <a href="#Advanced Tasks">Advanced Tasks</a>
-</p>
-<p>TBD</p>
-<subsection name="Advanced Tasks">
-<p>
-Generation of Doxygen reference is adjusted by the following files located in <code>trunk/vm/doc</code>:
-</p>
-<ul>
-<li><code>doc.properties</code> defines the input and output directories and the files included in each bundle
-</li>
-<li><code>build.xml</code> lists all doc build targets
-</li>
-<li><code>vm.cfg</code> is a copy of classlib configuration files and defines formatting and other output properties for Doxygen
-</li>
-
-</ul>
-</subsection>
-</section>
-</body>
+<?xml version="1.0" encoding="ISO-8859-1"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<document>
+
+ <properties>
+ <title>Apache Harmony DRL Virtual Machine Doc Index</title>
+ <author email="dev@harmony.apache.org">Harmony Documentation Team</author>
+ </properties>
+
+ <body>
+
+<section name="DRLVM Source Code Generated Documentation Index">
+<p>This is a landing page for Doxygen source code reference generated automatically from interface headers.
+Each link should lead to a documentation bundle generated from a component-related set of header files.
+The purpose of these documents is to provide a complete reference of available code in DRLVM interfaces.
+Because the code base is being actively developed, not all interfaces are well-documented at this point, so that
+you can find some interfaces not documented. Everyone's welcome to contribute to this initiative.
+</p>
+<p>
+The documentation bundles were generated automatically and posted on the site server. You can regenerate the docs
+from your source files locally, as described in section <a href="#Regenerating the Reference">Regenerating the Reference</a>.
+</p>
+ <subsection name="Doxygen API Reference for DRLVM Sources">
+ <p>This is a list of links to generated source code documentation bundles.
+ </p>
+ <ul>
+ <li><a href="doxygen/intf/html/index.html">DRLVM Interfaces</a> - the high-level interface headers</li>
+ <li><a href="doxygen/em/html/index.html">Execution Manager</a></li>
+ <li>Garbage Collectors:
+ <ul>
+ <li><a href="doxygen/gc_cc/html/index.html">Copying/Compacting Garbage Collector</a></li>
+ <li><a href="doxygen/gc_gen/html/index.html">Generational Garbage Collector</a></li>
+ <li><a href="doxygen/gcv4/html/index.html">Obsolete v.4 Garbage Collector</a></li>
+ </ul></li>
+ <li><a href="doxygen/interpreter/html/index.html">Interpreter</a></li>
+ <li><a href="doxygen/jitrino/html/index.html">Jitrino</a>- the just-in-time compiler </li>
+ <li><a href="doxygen/port/html/index.html">Porting Layer</a> - the extensions to APR</li>
+ <li><a href="doxygen/thread/html/index.html">Thread Manager</a></li>
+ <li><a href="doxygen/vmcore/html/index.html">VM Infrastructure</a> - the VM core component interfaces</li>
+ <li><a href="doxygen/vmi/html/index.html">Class Library Support</a> - the VMI interface</li>
+ <li><a href="doxygen/vmstart/html/index.html">Component Manager</a></li>
+ <li><a href="doxygen/tests/html/index.html">DTLVM Tests</a></li>
+ <li><a href="doxygen/drlvm/html/index.html">All DRLVM</a> - the big bundle with all of the above</li>
+ </ul>
+ </subsection>
+
+ <subsection name="Other Useful DRLVM documents">
+ <ul>
+ <li><a href="index.html" target="_blank">DRLVM
+ website documentation page</a> with links to all DRLVM documents</li>
+ <li><a href="http://wiki.apache.org/harmony/DRLVM_Documentation_Quality">Status
+ metrics for Doxygen API reference</a>, Wiki page with metrics that show improvement metrics for the reference </li>
+ </ul>
+ </subsection>
+</section>
+<section name="Regenerating the Reference">
+<p>
+Follow these instructions to regenerate reference materials analogous to those posted on the website. You can also adjust
+the list of files to include into a specific documentation bundle and configure Doxygen to produce a different output,
+see section <a href="#Advanced Tasks">Advanced Tasks</a>
+</p>
+<p>TBD</p>
+<subsection name="Advanced Tasks">
+<p>
+Generation of Doxygen reference is adjusted by the following files located in <code>trunk/vm/doc</code>:
+</p>
+<ul>
+<li><code>doc.properties</code> defines the input and output directories and the files included in each bundle
+</li>
+<li><code>build.xml</code> lists all doc build targets
+</li>
+<li><code>vm.cfg</code> is a copy of classlib configuration files and defines formatting and other output properties for Doxygen
+</li>
+
+</ul>
+</subsection>
+</section>
+</body>
</document>
Modified: harmony/standard/site/xdocs/subcomponents/drlvm/JIT.xml
URL: http://svn.apache.org/viewvc/harmony/standard/site/xdocs/subcomponents/drlvm/JIT.xml?view=diff&rev=517663&r1=517662&r2=517663
==============================================================================
--- harmony/standard/site/xdocs/subcomponents/drlvm/JIT.xml (original)
+++ harmony/standard/site/xdocs/subcomponents/drlvm/JIT.xml Tue Mar 13 05:17:43 2007
@@ -1,33 +1,33 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<document>
-
- <properties>
- <title>Jitrino Just-in-Time Compiler</title>
- <author email="dev@harmony.apache.org">Harmony Documentation Team</author>
-
- </properties>
-
- <body>
- <docinclude name="subcomponents/drlvm/Jitrino.html"/>
-
-
- </body>
-</document>
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+
+<document>
+
+ <properties>
+ <title>Jitrino Just-in-Time Compiler</title>
+ <author email="dev@harmony.apache.org">Harmony Documentation Team</author>
+
+ </properties>
+
+ <body>
+ <docinclude name="subcomponents/drlvm/Jitrino.html"/>
+
+
+ </body>
+</document>
Modified: harmony/standard/site/xdocs/subcomponents/drlvm/JIT_PMF.xml
URL: http://svn.apache.org/viewvc/harmony/standard/site/xdocs/subcomponents/drlvm/JIT_PMF.xml?view=diff&rev=517663&r1=517662&r2=517663
==============================================================================
--- harmony/standard/site/xdocs/subcomponents/drlvm/JIT_PMF.xml (original)
+++ harmony/standard/site/xdocs/subcomponents/drlvm/JIT_PMF.xml Tue Mar 13 05:17:43 2007
@@ -1,30 +1,30 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<document>
-
- <properties>
- <title>Jitrino Pipeline Management Framework</title>
- <author email="dev@harmony.apache.org">Harmony Documentation Team</author>
- </properties>
-
- <body>
- <docinclude name="subcomponents/drlvm/Jitrino_PMF.html"/>
- </body>
-</document>
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+
+<document>
+
+ <properties>
+ <title>Jitrino Pipeline Management Framework</title>
+ <author email="dev@harmony.apache.org">Harmony Documentation Team</author>
+ </properties>
+
+ <body>
+ <docinclude name="subcomponents/drlvm/Jitrino_PMF.html"/>
+ </body>
+</document>
Modified: harmony/standard/site/xdocs/subcomponents/drlvm/JVMTI-PopFrame.xml
URL: http://svn.apache.org/viewvc/harmony/standard/site/xdocs/subcomponents/drlvm/JVMTI-PopFrame.xml?view=diff&rev=517663&r1=517662&r2=517663
==============================================================================
--- harmony/standard/site/xdocs/subcomponents/drlvm/JVMTI-PopFrame.xml (original)
+++ harmony/standard/site/xdocs/subcomponents/drlvm/JVMTI-PopFrame.xml Tue Mar 13 05:17:43 2007
@@ -1,263 +1,263 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<document>
- <properties>
- <title>JVMTI Implementation of Pop Frame</title>
- <author email="dev@harmony.apache.org">Harmony Documentation Team</author>
-
- </properties>
-
- <body>
- <section name="JVMTI Pop Frame">
- <p>
- Here is a description of how popping a frame is currently
- implemented in the DRLVM tool interface (JVMTI). For a
- definition of the pop frame functionality, consult the JVMTI
- specification [<a href="#JVMTISpec">1</a>]. For generic
- information on JVMTI in the DRL virtual machine and for definition
- of related terms, see the <a href="developers_guide.html" title="DRLVM Developer's Guide">developer's
- guide</a>.
- </p>
-
- <subsection name="Introduction">
- <p> Popping a stack frame becomes necessary when execution is in a native
- function and a <a href="developers_guide.html#M2nFrame">managed-to-native
- frame</a> (M2nFrame) is on the stack. This means that the JVMTI
- component pops the M2nFrame and the Java frame above it. A frame is popped
- each time the JVMTI function <code>PopFrame()</code> is
- called. The current pop-frame implementation is based on the exception
- handling mechanism for transferring execution control. This way, VM pops
- frames on the current thread only. To pop frames on other threads, VM
- uses the M2nFrame flag system and callbacks.</p>
- </subsection>
- <subsection name="How to Pop a Frame">
- <p>To pop a frame on the current thread, refer to the following core
- functions:
- </p>
- <table>
- <tr>
- <th class="TableHeading">
- Function Name </th>
- <th class="TableHeading">
- Role</th>
- </tr>
- <tr>
- <td class="TableCell">
- <code>jvmti_jit_prepare_pop_frame</code>
- </td>
- <td class="TableCell">
- Finds register context for the previous frame using the
- <a href="developers_guide.html#Stack_Iterator">stack iterator</a>.</td>
- </tr>
- <tr>
- <td class="TableCell">
- <code>jvmti_jit_complete_pop_frame</code>
- </td>
- <td class="TableCell">
- Transfers control to the saved register context for the
- popped frame.
- </td>
- </tr>
- <tr>
- <td class="TableCell">
- <code>jvmti_ji_do_pop_frame</code>
- </td>
- <td class="TableCell">
- Transfers control to the previous frame. This function is
- a simple and fast combination of sequential calls of
- <code>jvmti_jit_prepare_pop_frame</code> and
- <code>jvmti_jit_complete_pop_frame</code>.
- </td>
- </tr>
- </table>
- <p>The state of a frame with regard to popping is indicated in the
- <code>frame_type</code>
- field. This field can have the following values: </p>
- <table>
- <tr>
- <th class="TableHeading">
- Flag Name
- </th>
- <th class="TableHeading">
- Meaning</th>
- </tr>
- <tr>
- <td class="TableCell">
- <code>FRAME_UNPOPABLE</code>
- </td>
- <td class="TableCell">
- The frame cannot be popped.
- </td>
- </tr>
- <tr>
- <td class="TableCell">
- <code>FRAME_POPABLE</code>
- </td>
- <td class="TableCell">
- The frame can be popped but is not.
- </td>
- </tr>
- <tr>
- <td class="TableCell">
- <code>FRAME_POP_NOW</code>
- </td>
- <td class="TableCell">
- The frame is popped and the state of VM can be
- unpredictable and unexpected. JVMTI cannot work in this
- state and waits until the popped frame is resumed and the
- frame state is changed.
- </td>
- </tr>
- <tr>
- <td class="TableCell">
- <code>FRAME_POP_DONE =
- FRAME_POPABLE |FRAME_POP_NOW</code>
- </td>
- <td class="TableCell">
- The frame is popped now but VM state is OK and JVMTI can
- work without thread resume.
- </td>
- </tr>
- </table>
- <p>
- In the current implementation, popping a frame goes in the
- following way:
- </p>
- <ol>
- <li>
- VM suspends the popped thread in one of these functions:
- <code>thread_suspend_disable()</code> or in <code>hythread_safe_point()</code>.
- </li>
- <li>
- The JVMTI Agent calls <code>PopFrame()</code> and does the following:
- <ol>
- <li>
- Checks that the flag for the topmost M2nFrame is set to <code>FRAME_POPABLE</code>,
- which means that the frame can be popped.
- </li>
- <li>
- Changes the flag
- to <code>FRAME_POP_NOW</code>.
- </li>
- <li>
- Sets the safe point for the callback function. The suspended thread
- executes the callback while staying in the function where the
- thread is suspended.
- </li>
- </ol>
- </li>
- <li>
- The callback
- function pops the frame in one of the following ways depending on
- the function and on area of the stack:
- <ol>
- <li>
- For <b>hythread_safe_point():</b>
- <ol>
- <li>
- VM finds the register
- context for the previous frame and saves it in the current M2nFrame.
- The frame type flag changed to <code>FRAME_POP_DONE</code>.
- </li>
- <li>
- VM exits the safe point and checks the frame status. If
- the frame is popped, VM transfers control to the saved register
- context. Otherwise, VM exits normally.
- </li>
- </ol>
- </li>
- <li>
- For the <b>suspend_disable()</b> function in an <a href="developers_guide.html#Exception_Handling">
- unwindable
- area of the stack
- </a>:
- <ol>
- <li>
- The callback explicitly calls <code>hythread_safe_point()</code> to
- stop the current thread in the safe point and wait until
- the thread is resumed by another thread.
- </li>
- <li>
- When the thread is resumed, the callback pops the frame
- for the current thread and transfers control to the previous
- frame.
- </li>
- </ol>
- </li>
- <li>
- For the <strong>suspend_disable()</strong> function in a <a href="developers_guide.html#Exception_Handling">
- non-unwindable
- area of the stack
- </a>:
- <ol>
- <li>
- VM raises a special exception object and waits for the end
- of the area.
- </li>
- <li>
- After exiting the area, VM checks whether the exception
- is set and pops the frame for the current thread and transfers
- control to the previous frame.
- </li>
- </ol>
- </li>
- </ol>
- </li>
- </ol>
- </subsection>
- <subsection name="Implementation Specifics">
-
-
- <ul>
- <li>Because the implementation re-uses the exception scheme, popping
- a frame does not transfer control to the beginning of the bytecode
- invoke instruction, but to the native call instruction. This is possible
- because the JIT compiles an invoke instruction into
- several native instructions including the call.<br />
- A better way of handling the operation is to make VM transfer
- control to the beginning of the invoke instruction block. </li>
- <li> In the exception handling mechanism, control is returned to the
- instruction pointer (IP) after the call instruction. This way, VM
- must find the call IP of the previous instruction by using
- information on JIT calling conventions.<br />
-It is advisory to move the corresponding functionality to JIT so that VM has no data
-on JIT calling conventions. </li>
- <li> Object references in popped frames can become outdated during
- garbage collection because VM components do not enumerate the stack
- for such frames. For GC purposes, JVM TI enumerates popped frames
- until the thread is resumed and control is transferred. </li>
- <li> Due to specifics of the current thread manager implementation,
- the pop frame cannot guarantee synchronization of thread-suspend
- states across different threads. This way, if Thread A suspends
- Thread B, the current implementation cannot guarantee that Thread
- B is not resumed by another thread. In such a situation, operation of
- Thread A can be unstable because it relies on Thread B being
- suspended. </li>
- </ul>
- </subsection>
- <subsection name="Related Information">
-
- <p>[<a name="JVMTISpec" id="JVMTISpec"></a>1] JVM
- Tool Interface Specification, <a
-href="http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/jvmti.html"
-target="_blank">http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/jvmti.html</a> </p>
- </subsection>
- </section>
-</body>
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<document>
+ <properties>
+ <title>JVMTI Implementation of Pop Frame</title>
+ <author email="dev@harmony.apache.org">Harmony Documentation Team</author>
+
+ </properties>
+
+ <body>
+ <section name="JVMTI Pop Frame">
+ <p>
+ Here is a description of how popping a frame is currently
+ implemented in the DRLVM tool interface (JVMTI). For a
+ definition of the pop frame functionality, consult the JVMTI
+ specification [<a href="#JVMTISpec">1</a>]. For generic
+ information on JVMTI in the DRL virtual machine and for definition
+ of related terms, see the <a href="developers_guide.html" title="DRLVM Developer's Guide">developer's
+ guide</a>.
+ </p>
+
+ <subsection name="Introduction">
+ <p> Popping a stack frame becomes necessary when execution is in a native
+ function and a <a href="developers_guide.html#M2nFrame">managed-to-native
+ frame</a> (M2nFrame) is on the stack. This means that the JVMTI
+ component pops the M2nFrame and the Java frame above it. A frame is popped
+ each time the JVMTI function <code>PopFrame()</code> is
+ called. The current pop-frame implementation is based on the exception
+ handling mechanism for transferring execution control. This way, VM pops
+ frames on the current thread only. To pop frames on other threads, VM
+ uses the M2nFrame flag system and callbacks.</p>
+ </subsection>
+ <subsection name="How to Pop a Frame">
+ <p>To pop a frame on the current thread, refer to the following core
+ functions:
+ </p>
+ <table>
+ <tr>
+ <th class="TableHeading">
+ Function Name </th>
+ <th class="TableHeading">
+ Role</th>
+ </tr>
+ <tr>
+ <td class="TableCell">
+ <code>jvmti_jit_prepare_pop_frame</code>
+ </td>
+ <td class="TableCell">
+ Finds register context for the previous frame using the
+ <a href="developers_guide.html#Stack_Iterator">stack iterator</a>.</td>
+ </tr>
+ <tr>
+ <td class="TableCell">
+ <code>jvmti_jit_complete_pop_frame</code>
+ </td>
+ <td class="TableCell">
+ Transfers control to the saved register context for the
+ popped frame.
+ </td>
+ </tr>
+ <tr>
+ <td class="TableCell">
+ <code>jvmti_ji_do_pop_frame</code>
+ </td>
+ <td class="TableCell">
+ Transfers control to the previous frame. This function is
+ a simple and fast combination of sequential calls of
+ <code>jvmti_jit_prepare_pop_frame</code> and
+ <code>jvmti_jit_complete_pop_frame</code>.
+ </td>
+ </tr>
+ </table>
+ <p>The state of a frame with regard to popping is indicated in the
+ <code>frame_type</code>
+ field. This field can have the following values: </p>
+ <table>
+ <tr>
+ <th class="TableHeading">
+ Flag Name
+ </th>
+ <th class="TableHeading">
+ Meaning</th>
+ </tr>
+ <tr>
+ <td class="TableCell">
+ <code>FRAME_UNPOPABLE</code>
+ </td>
+ <td class="TableCell">
+ The frame cannot be popped.
+ </td>
+ </tr>
+ <tr>
+ <td class="TableCell">
+ <code>FRAME_POPABLE</code>
+ </td>
+ <td class="TableCell">
+ The frame can be popped but is not.
+ </td>
+ </tr>
+ <tr>
+ <td class="TableCell">
+ <code>FRAME_POP_NOW</code>
+ </td>
+ <td class="TableCell">
+ The frame is popped and the state of VM can be
+ unpredictable and unexpected. JVMTI cannot work in this
+ state and waits until the popped frame is resumed and the
+ frame state is changed.
+ </td>
+ </tr>
+ <tr>
+ <td class="TableCell">
+ <code>FRAME_POP_DONE =
+ FRAME_POPABLE |FRAME_POP_NOW</code>
+ </td>
+ <td class="TableCell">
+ The frame is popped now but VM state is OK and JVMTI can
+ work without thread resume.
+ </td>
+ </tr>
+ </table>
+ <p>
+ In the current implementation, popping a frame goes in the
+ following way:
+ </p>
+ <ol>
+ <li>
+ VM suspends the popped thread in one of these functions:
+ <code>thread_suspend_disable()</code> or in <code>hythread_safe_point()</code>.
+ </li>
+ <li>
+ The JVMTI Agent calls <code>PopFrame()</code> and does the following:
+ <ol>
+ <li>
+ Checks that the flag for the topmost M2nFrame is set to <code>FRAME_POPABLE</code>,
+ which means that the frame can be popped.
+ </li>
+ <li>
+ Changes the flag
+ to <code>FRAME_POP_NOW</code>.
+ </li>
+ <li>
+ Sets the safe point for the callback function. The suspended thread
+ executes the callback while staying in the function where the
+ thread is suspended.
+ </li>
+ </ol>
+ </li>
+ <li>
+ The callback
+ function pops the frame in one of the following ways depending on
+ the function and on area of the stack:
+ <ol>
+ <li>
+ For <b>hythread_safe_point():</b>
+ <ol>
+ <li>
+ VM finds the register
+ context for the previous frame and saves it in the current M2nFrame.
+ The frame type flag changed to <code>FRAME_POP_DONE</code>.
+ </li>
+ <li>
+ VM exits the safe point and checks the frame status. If
+ the frame is popped, VM transfers control to the saved register
+ context. Otherwise, VM exits normally.
+ </li>
+ </ol>
+ </li>
+ <li>
+ For the <b>suspend_disable()</b> function in an <a href="developers_guide.html#Exception_Handling">
+ unwindable
+ area of the stack
+ </a>:
+ <ol>
+ <li>
+ The callback explicitly calls <code>hythread_safe_point()</code> to
+ stop the current thread in the safe point and wait until
+ the thread is resumed by another thread.
+ </li>
+ <li>
+ When the thread is resumed, the callback pops the frame
+ for the current thread and transfers control to the previous
+ frame.
+ </li>
+ </ol>
+ </li>
+ <li>
+ For the <strong>suspend_disable()</strong> function in a <a href="developers_guide.html#Exception_Handling">
+ non-unwindable
+ area of the stack
+ </a>:
+ <ol>
+ <li>
+ VM raises a special exception object and waits for the end
+ of the area.
+ </li>
+ <li>
+ After exiting the area, VM checks whether the exception
+ is set and pops the frame for the current thread and transfers
+ control to the previous frame.
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </subsection>
+ <subsection name="Implementation Specifics">
+
+
+ <ul>
+ <li>Because the implementation re-uses the exception scheme, popping
+ a frame does not transfer control to the beginning of the bytecode
+ invoke instruction, but to the native call instruction. This is possible
+ because the JIT compiles an invoke instruction into
+ several native instructions including the call.<br />
+ A better way of handling the operation is to make VM transfer
+ control to the beginning of the invoke instruction block. </li>
+ <li> In the exception handling mechanism, control is returned to the
+ instruction pointer (IP) after the call instruction. This way, VM
+ must find the call IP of the previous instruction by using
+ information on JIT calling conventions.<br />
+It is advisory to move the corresponding functionality to JIT so that VM has no data
+on JIT calling conventions. </li>
+ <li> Object references in popped frames can become outdated during
+ garbage collection because VM components do not enumerate the stack
+ for such frames. For GC purposes, JVM TI enumerates popped frames
+ until the thread is resumed and control is transferred. </li>
+ <li> Due to specifics of the current thread manager implementation,
+ the pop frame cannot guarantee synchronization of thread-suspend
+ states across different threads. This way, if Thread A suspends
+ Thread B, the current implementation cannot guarantee that Thread
+ B is not resumed by another thread. In such a situation, operation of
+ Thread A can be unstable because it relies on Thread B being
+ suspended. </li>
+ </ul>
+ </subsection>
+ <subsection name="Related Information">
+
+ <p>[<a name="JVMTISpec" id="JVMTISpec"></a>1] JVM
+ Tool Interface Specification, <a
+href="http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/jvmti.html"
+target="_blank">http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/jvmti.html</a> </p>
+ </subsection>
+ </section>
+</body>
</document>