harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nadi...@apache.org
Subject 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/
Date Tue, 13 Mar 2007 12:17:45 GMT
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
-        &nbsp;
-        #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
-        &nbsp;
-        #end
-    </font>
-</td>
-#end
-
-#macro ( projectanchor $name $value )
-#if ($value.startsWith("http://"))
-    &#149;&nbsp;<a href="$value">$name</a>
-#elseif ($value.startsWith("/site"))
-    &#149;&nbsp;<a href="http://jakarta.apache.org$value">$name</a>
-#else
-    &#149;&nbsp;<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"))&nbsp;
-        #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 &#169; 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
+        &nbsp;
+        #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
+        &nbsp;
+        #end
+    </font>
+</td>
+#end
+
+#macro ( projectanchor $name $value )
+#if ($value.startsWith("http://"))
+    &#149;&nbsp;<a href="$value">$name</a>
+#elseif ($value.startsWith("/site"))
+    &#149;&nbsp;<a href="http://jakarta.apache.org$value">$name</a>
+#else
+    &#149;&nbsp;<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"))&nbsp;
+        #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 &#169; 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>



Mime
View raw message