Mercurial > hg > truffle
diff src/share/vm/prims/jvmtiH.xsl @ 0:a61af66fc99e jdk7-b24
Initial load
author | duke |
---|---|
date | Sat, 01 Dec 2007 00:00:00 +0000 |
parents | |
children | c18cbe5936b8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/vm/prims/jvmtiH.xsl Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,452 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved. + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + This code is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License version 2 only, as + published by the Free Software Foundation. + + This code is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + version 2 for more details (a copy is included in the LICENSE file that + accompanied this code). + + You should have received a copy of the GNU General Public License version + 2 along with this work; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + + Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + CA 95054 USA or visit www.sun.com if you need additional information or + have any questions. + +--> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.0"> + + <xsl:import href="jvmtiLib.xsl"/> + + <xsl:output method="text" omit-xml-declaration="yes"/> + + <xsl:template match="/"> + <xsl:apply-templates select="specification"/> + </xsl:template> + + <xsl:template match="specification"> + + <xsl:call-template name="intro"/> + + <xsl:text>/* Derived Base Types */ +</xsl:text> + <xsl:apply-templates select="//basetype"/> + + <xsl:text> + + /* Constants */ +</xsl:text> + <xsl:apply-templates select="//constants"/> + + <xsl:text> + + /* Errors */ + +typedef enum { +</xsl:text> + <xsl:for-each select="//errorid"> + <xsl:sort select="@num" data-type="number"/> + <xsl:apply-templates select="." mode="enum"/> + <xsl:text>, +</xsl:text> + <xsl:if test="position() = last()"> + <xsl:text> JVMTI_ERROR_MAX = </xsl:text> + <xsl:value-of select="@num"/> + </xsl:if> + </xsl:for-each> + <xsl:text> +} jvmtiError; +</xsl:text> + <xsl:apply-templates select="eventsection" mode="enum"/> + + <xsl:text> + /* Pre-Declarations */ +</xsl:text> +<xsl:apply-templates select="//typedef|//uniontypedef" mode="early"/> + + <xsl:text> + /* Function Types */ +</xsl:text> + <xsl:apply-templates select="//callback"/> + + <xsl:text> + + /* Structure Types */ +</xsl:text> + <xsl:apply-templates select="//typedef|//uniontypedef" mode="body"/> + <xsl:apply-templates select="//capabilitiestypedef"/> + + <xsl:apply-templates select="eventsection" mode="body"/> + + <xsl:apply-templates select="functionsection"/> + + <xsl:call-template name="outro"/> + + </xsl:template> + + <xsl:template name="intro"> + <xsl:call-template name="includeHeader"/> + <xsl:text> + /* Include file for the Java(tm) Virtual Machine Tool Interface */ + +#ifndef _JAVA_JVMTI_H_ +#define _JAVA_JVMTI_H_ + +#include "jni.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + JVMTI_VERSION_1 = 0x30010000, + JVMTI_VERSION_1_0 = 0x30010000, + JVMTI_VERSION_1_1 = 0x30010100, + + JVMTI_VERSION = 0x30000000 + (</xsl:text> + <xsl:value-of select="//specification/@majorversion"/> + <xsl:text> * 0x10000) + (</xsl:text> + <xsl:value-of select="//specification/@minorversion"/> + <xsl:text> * 0x100)</xsl:text> + <xsl:variable name="micro"> + <xsl:call-template name="microversion"/> + </xsl:variable> + <xsl:choose> + <xsl:when test="string($micro)='dev'"> + <xsl:text> /* checked out - </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text> + </xsl:text> + <xsl:value-of select="$micro"/> + <xsl:text> /* </xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:text>version: </xsl:text> + <xsl:call-template name="showversion"/> + <xsl:text> */ +}; + +JNIEXPORT jint JNICALL +Agent_OnLoad(JavaVM *vm, char *options, void *reserved); + +JNIEXPORT jint JNICALL +Agent_OnAttach(JavaVM* vm, char* options, void* reserved); + +JNIEXPORT void JNICALL +Agent_OnUnload(JavaVM *vm); + + /* Forward declaration of the environment */ + +struct _jvmtiEnv; + +struct jvmtiInterface_1_; + +#ifdef __cplusplus +typedef _jvmtiEnv jvmtiEnv; +#else +typedef const struct jvmtiInterface_1_ *jvmtiEnv; +#endif /* __cplusplus */ + +</xsl:text> + </xsl:template> + + <xsl:template name="outro"> + <xsl:text> + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif /* !_JAVA_JVMTI_H_ */ + +</xsl:text> +</xsl:template> + +<xsl:template match="eventsection" mode="enum"> + <xsl:text> + /* Event IDs */ + +typedef enum { +</xsl:text> + <xsl:for-each select="event"> + <xsl:sort select="@num" data-type="number"/> + <xsl:if test="position()=1"> + <xsl:text> JVMTI_MIN_EVENT_TYPE_VAL = </xsl:text> + <xsl:value-of select="@num"/> + <xsl:text>, +</xsl:text> + </xsl:if> + <xsl:apply-templates select="." mode="enum"/> + <xsl:text>, +</xsl:text> + <xsl:if test="position()=last()"> + <xsl:text> JVMTI_MAX_EVENT_TYPE_VAL = </xsl:text> + <xsl:value-of select="@num"/> + </xsl:if> + </xsl:for-each> + <xsl:text> +} jvmtiEvent; + +</xsl:text> +</xsl:template> + +<xsl:template match="eventsection" mode="body"> + <xsl:text> + + /* Event Definitions */ + +typedef void (JNICALL *jvmtiEventReserved)(void); + +</xsl:text> + <xsl:apply-templates select="event" mode="definition"> + <xsl:sort select="@id"/> + </xsl:apply-templates> + + <xsl:text> + /* Event Callback Structure */ + +typedef struct { +</xsl:text> + <xsl:call-template name="eventStruct"> + <xsl:with-param name="events" select="event"/> + <xsl:with-param name="index" select="0"/> + <xsl:with-param name="started" select="false"/> + <xsl:with-param name="comment" select="'Yes'"/> + </xsl:call-template> + <xsl:text>} jvmtiEventCallbacks; +</xsl:text> + +</xsl:template> + + +<xsl:template match="event" mode="definition"> + <xsl:text> +typedef void (JNICALL *jvmtiEvent</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>) + (jvmtiEnv *jvmti_env</xsl:text> + <xsl:apply-templates select="parameters" mode="signature"> + <xsl:with-param name="comma"> + <xsl:text>, + </xsl:text> + </xsl:with-param> + </xsl:apply-templates> + <xsl:text>); +</xsl:text> +</xsl:template> + +<xsl:template match="functionsection"> + <xsl:text> + + /* Function Interface */ + +typedef struct jvmtiInterface_1_ { + +</xsl:text> + <xsl:call-template name="funcStruct"> + <xsl:with-param name="funcs" select="category/function[count(@hide)=0]"/> + <xsl:with-param name="index" select="1"/> + </xsl:call-template> + + <xsl:text>} jvmtiInterface_1; + +struct _jvmtiEnv { + const struct jvmtiInterface_1_ *functions; +#ifdef __cplusplus + +</xsl:text> + <xsl:apply-templates select="category" mode="cppinline"/> + <xsl:text> +#endif /* __cplusplus */ +}; +</xsl:text> + +</xsl:template> + +<xsl:template name="funcStruct"> + <xsl:param name="funcs"/> + <xsl:param name="index"/> + <xsl:variable name="thisFunction" select="$funcs[@num=$index]"/> + <xsl:text> /* </xsl:text> + <xsl:number value="$index" format=" 1"/> + <xsl:text> : </xsl:text> + <xsl:choose> + <xsl:when test="count($thisFunction)=1"> + <xsl:value-of select="$thisFunction/synopsis"/> + <xsl:text> */ + jvmtiError (JNICALL *</xsl:text> + <xsl:value-of select="$thisFunction/@id"/> + <xsl:text>) (jvmtiEnv* env</xsl:text> + <xsl:apply-templates select="$thisFunction/parameters" mode="signature"> + <xsl:with-param name="comma"> + <xsl:text>, + </xsl:text> + </xsl:with-param> + </xsl:apply-templates> + <xsl:text>)</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text> RESERVED */ + void *reserved</xsl:text> + <xsl:value-of select="$index"/> + </xsl:otherwise> + </xsl:choose> + <xsl:text>; + +</xsl:text> + <xsl:if test="count($funcs[@num > $index]) > 0"> + <xsl:call-template name="funcStruct"> + <xsl:with-param name="funcs" select="$funcs"/> + <xsl:with-param name="index" select="1+$index"/> + </xsl:call-template> + </xsl:if> +</xsl:template> + + +<xsl:template match="function"> + <xsl:text> jvmtiError (JNICALL *</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>) (jvmtiEnv* env</xsl:text> + <xsl:apply-templates select="parameters" mode="signature"/> + <xsl:text>); + +</xsl:text> +</xsl:template> + +<xsl:template match="category" mode="cppinline"> + <xsl:apply-templates select="function[count(@hide)=0]" mode="cppinline"/> +</xsl:template> + +<xsl:template match="function" mode="cppinline"> + <xsl:text> + jvmtiError </xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>(</xsl:text> + <xsl:apply-templates select="parameters" mode="signaturenoleadcomma"/> + <xsl:text>) { + return functions-></xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>(this</xsl:text> + <xsl:for-each select="parameters"> + <xsl:for-each select="param"> + <xsl:if test="@id != '...' and count(jclass/@method) = 0"> + <xsl:text>, </xsl:text> + <xsl:value-of select="@id"/> + </xsl:if> + </xsl:for-each> + </xsl:for-each> + <xsl:text>); + } +</xsl:text> +</xsl:template> + + + <xsl:template match="basetype"> + <xsl:if test="count(definition)!=0"> + <xsl:text> +</xsl:text> + <xsl:apply-templates select="definition"/> + </xsl:if> + </xsl:template> + + <xsl:template match="constants"> + <xsl:text> + + /* </xsl:text> + <xsl:value-of select="@label"/> + <xsl:text> */ +</xsl:text> + <xsl:choose> + <xsl:when test="@kind='enum'"> + <xsl:apply-templates select="." mode="enum"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="constants"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + +<xsl:template match="callback"> + <xsl:text> +typedef </xsl:text> + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> + <xsl:text> (JNICALL *</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>) + (</xsl:text> + <xsl:for-each select="parameters"> + <xsl:apply-templates select="param[position()=1]" mode="signature"/> + <xsl:for-each select="param[position()>1]"> + <xsl:text>, </xsl:text> + <xsl:apply-templates select="." mode="signature"/> + </xsl:for-each> + </xsl:for-each> + <xsl:text>); +</xsl:text> +</xsl:template> + +<xsl:template match="capabilitiestypedef"> + <xsl:text> +</xsl:text> + <xsl:apply-templates select="." mode="genstruct"/> + <xsl:text> +</xsl:text> +</xsl:template> + +<xsl:template match="typedef" mode="early"> + <xsl:text>struct _</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>; +</xsl:text> + <xsl:text>typedef struct _</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text> </xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>; +</xsl:text> +</xsl:template> + +<xsl:template match="typedef" mode="body"> + <xsl:text>struct _</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text> { +</xsl:text> +<xsl:apply-templates select="field" mode="signature"/> + <xsl:text>}; +</xsl:text> +</xsl:template> + +<xsl:template match="uniontypedef" mode="early"> + <xsl:text>union _</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>; +</xsl:text> + <xsl:text>typedef union _</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text> </xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>; +</xsl:text> +</xsl:template> + +<xsl:template match="uniontypedef" mode="body"> + <xsl:text>union _</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text> { +</xsl:text> +<xsl:apply-templates select="field" mode="signature"/> + <xsl:text>}; +</xsl:text> +</xsl:template> + +</xsl:stylesheet>