VirtualBox

Changeset 53922 in vbox for trunk/src/VBox/Main


Ignore:
Timestamp:
Jan 22, 2015 3:41:40 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
97795
Message:

glue-java.xsl: xsl:key + key() optimizations, xsltproc buffer flushing hack. Saves 3 seconds here.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/glue/glue-java.xsl

    r53386 r53922  
    4343
    4444<xsl:strip-space elements="*"/>
     45
     46
     47<!-- - - - - - - - - - - - - - - - - - - - - - -
     48  Keys for more efficiently looking up of types.
     49 - - - - - - - - - - - - - - - - - - - - - - -->
     50
     51<xsl:key name="G_keyEnumsByName" match="//enum[@name]" use="@name"/>
     52<xsl:key name="G_keyInterfacesByName" match="//interface[@name]" use="@name"/>
     53
     54
     55<!-- - - - - - - - - - - - - - - - - - - - - - -
     56 - - - - - - - - - - - - - - - - - - - - - - -->
    4557
    4658<xsl:template name="fileheader">
     
    115127  <xsl:param name="file" />
    116128  <xsl:if test="$filelistonly=''">
    117     <xsl:value-of select="concat('&#10;// ##### ENDFILE &quot;', $file, '&quot;&#10;&#10;')" />
     129    <xsl:value-of select="concat('&#10;// ##### ENDFILE &quot;', $file, '&quot;&#10;')" />
     130    <xsl:call-template name="xsltprocNewlineOutputHack"/>
    118131  </xsl:if>
    119132</xsl:template>
     
    271284
    272285  <xsl:choose>
    273     <xsl:when test="//enum[@name=$context]/const[@name=$identifier]">
     286    <xsl:when test="key('G_keyEnumsByName', $context)/const[@name=$identifier]">
    274287      <xsl:value-of select="$identifier"/>
    275288    </xsl:when>
    276     <xsl:when test="//interface[@name=$context]/method[@name=$identifier]">
     289    <xsl:when test="key('G_keyInterfacesByName', $context)/method[@name=$identifier]">
    277290      <xsl:value-of select="$identifier"/>
    278291      <xsl:text>(</xsl:text>
    279       <xsl:for-each select="//interface[@name=$context]/method[@name=$identifier]/param">
     292      <xsl:for-each select="key('G_keyInterfacesByName', $context)/method[@name=$identifier]/param">
    280293        <xsl:if test="@dir!='return'">
    281294          <xsl:if test="position() > 1">
     
    298311      <xsl:text>)</xsl:text>
    299312    </xsl:when>
    300     <xsl:when test="//interface[@name=$context]/attribute[@name=$identifier]">
     313    <xsl:when test="key('G_keyInterfacesByName', $context)/attribute[@name=$identifier]">
    301314      <xsl:call-template name="makeGetterName">
    302315        <xsl:with-param name="attrname" select="$identifier" />
     
    725738
    726739  <xsl:choose>
    727     <xsl:when test="//enum[@name=$name] or //enum[@name=$origname]">
     740    <xsl:when test="(count(key('G_keyEnumsByName', $name)) > 0) or (count(key('G_keyEnumsByName', $origname)) > 0)">
    728741      <xsl:value-of select="concat($G_virtualBoxPackage, concat('.', $name))" />
    729742    </xsl:when>
    730     <xsl:when test="//interface[@name=$name]">
     743    <xsl:when test="count(key('G_keyInterfacesByName', $name)) > 0">
    731744      <xsl:value-of select="concat($G_virtualBoxPackage, concat('.', $name))" />
    732745    </xsl:when>
     
    854867        </xsl:when>
    855868
    856         <xsl:when test="//interface[@name=$type]/@wsmap='struct'">
     869        <xsl:when test="key('G_keyInterfacesByName', $type)/@wsmap='struct'">
    857870          <xsl:call-template name="wrappedName">
    858871            <xsl:with-param name="ifname" select="$type" />
     
    860873        </xsl:when>
    861874
    862         <xsl:when test="//interface[@name=$type]">
     875        <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
    863876          <xsl:call-template name="wrappedName">
    864877            <xsl:with-param name="ifname" select="$type" />
     
    866879        </xsl:when>
    867880
    868         <xsl:when test="//enum[@name=$type]">
     881        <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
    869882          <xsl:text>long</xsl:text>
    870883        </xsl:when>
     
    897910        </xsl:when>
    898911
    899         <xsl:when test="//interface[@name=$type]/@wsmap='managed'">
     912        <xsl:when test="key('G_keyInterfacesByName', $type)/@wsmap='managed'">
    900913          <xsl:text>String</xsl:text>
    901914        </xsl:when>
    902915
    903         <xsl:when test="//interface[@name=$type]/@wsmap='struct'">
     916        <xsl:when test="key('G_keyInterfacesByName', $type)/@wsmap='struct'">
    904917          <xsl:value-of select="concat($G_virtualBoxPackageCom, '.', $type)" />
    905918        </xsl:when>
    906919
    907         <xsl:when test="//enum[@name=$type]">
     920        <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
    908921          <xsl:value-of select="concat($G_virtualBoxPackageCom, '.', $type)" />
    909922        </xsl:when>
     
    973986  <xsl:param name="safearray"/>
    974987  <xsl:variable name="isstruct"
    975                 select="//interface[@name=$idltype]/@wsmap='struct'" />
     988                select="key('G_keyInterfacesByName', $idltype)/@wsmap='struct'" />
    976989
    977990  <xsl:variable name="gluetype">
     
    9931006
    9941007  <xsl:choose>
    995     <xsl:when test="//interface[@name=$idltype] or $idltype='$unknown'">
     1008    <xsl:when test="$idltype = '$unknown' or (count(key('G_keyInterfacesByName', $idltype)) > 0)">
    9961009      <xsl:choose>
    9971010        <xsl:when test="$safearray='yes'">
     
    10111024    </xsl:when>
    10121025
    1013     <xsl:when test="//enum[@name=$idltype]">
     1026    <xsl:when test="count(key('G_keyEnumsByName', $idltype)) > 0">
    10141027      <xsl:choose>
    10151028        <xsl:when test="$safearray='yes'">
     
    10761089    </xsl:when>
    10771090
    1078     <xsl:when test="//interface[@name=$idltype] or $idltype='$unknown'">
     1091    <xsl:when test="$idltype = '$unknown' or (count(key('G_keyInterfacesByName', $idltype)) > 0)">
    10791092      <xsl:value-of select="concat('Helper.wrapDispatch(', $gluetype, '.class, ', $value, '.getDispatch())')"/>
    10801093    </xsl:when>
    10811094
    1082     <xsl:when test="//enum[@name=$idltype]">
     1095    <xsl:when test="count(key('G_keyEnumsByName', $idltype)) > 0">
    10831096      <xsl:value-of select="concat($gluetype, '.fromValue(', $value, '.getInt())')"/>
    10841097    </xsl:when>
     
    11361149
    11371150  <xsl:variable name="isstruct"
    1138                 select="//interface[@name=$idltype]/@wsmap='struct'" />
     1151                select="key('G_keyInterfacesByName', $idltype)/@wsmap='struct'" />
    11391152
    11401153  <xsl:variable name="gluetype">
     
    11651178          <xsl:value-of select="concat('Helper.wrap2(', $elemgluetype, '.class, ', $elembacktype, '.class, port, ', $value, ')')"/>
    11661179        </xsl:when>
    1167         <xsl:when test="//enum[@name=$idltype]">
     1180        <xsl:when test="count(key('G_keyEnumsByName', $idltype)) > 0">
    11681181          <xsl:value-of select="concat('Helper.convertEnums(', $elembacktype, '.class, ', $elemgluetype, '.class, ', $value, ')')"/>
    11691182        </xsl:when>
    1170         <xsl:when test="//interface[@name=$idltype] or $idltype='$unknown'">
     1183        <xsl:when test="$idltype = '$unknown' or (count(key('G_keyInterfacesByName', $idltype)) > 0)">
    11711184          <xsl:value-of select="concat('Helper.wrap(', $elemgluetype, '.class, port, ', $value, ')')"/>
    11721185        </xsl:when>
     
    11821195    <xsl:otherwise>
    11831196      <xsl:choose>
    1184         <xsl:when test="//enum[@name=$idltype]">
     1197        <xsl:when test="count(key('G_keyEnumsByName', $idltype)) > 0">
    11851198          <xsl:value-of select="concat($gluetype, '.fromValue(', $value, '.value())')"/>
    11861199        </xsl:when>
     
    12151228          <xsl:value-of select="concat('(', $value, ' != null) ? new ', $gluetype, '(', $value, ', port) : null')" />
    12161229        </xsl:when>
    1217         <xsl:when test="//interface[@name=$idltype] or $idltype='$unknown'">
     1230        <xsl:when test="$idltype = '$unknown' or (count(key('G_keyInterfacesByName', $idltype)) > 0)">
    12181231          <!-- if the MOR string is empty, that means NULL, so return NULL instead of an object then -->
    12191232          <xsl:value-of select="concat('(', $value, '.length() > 0) ? new ', $gluetype, '(', $value, ', port) : null')" />
     
    12691282  <xsl:param name="safearray"/>
    12701283  <xsl:variable name="isstruct"
    1271                 select="//interface[@name=$idltype]/@wsmap='struct'" />
     1284                select="key('G_keyInterfacesByName', $idltype)/@wsmap='struct'" />
    12721285  <xsl:variable name="gluetype">
    12731286    <xsl:call-template name="typeIdl2Glue">
     
    12951308
    12961309  <xsl:choose>
    1297     <xsl:when test="//interface[@name=$idltype]">
     1310    <xsl:when test="count(key('G_keyInterfacesByName', $idltype)) > 0">
    12981311      <xsl:choose>
    12991312        <xsl:when test="$safearray='yes'">
     
    13241337    </xsl:when>
    13251338
    1326     <xsl:when test="//enum[@name=$idltype]">
     1339    <xsl:when test="count(key('G_keyEnumsByName', $idltype)) > 0">
    13271340      <xsl:choose>
    13281341        <xsl:when test="$safearray='yes'">
     
    14011414
    14021415  <xsl:choose>
    1403     <xsl:when test="//interface[@name=$idltype]">
     1416    <xsl:when test="count(key('G_keyInterfacesByName', $idltype)) > 0">
    14041417      <xsl:choose>
    14051418        <xsl:when test="$safearray='yes'">
     
    14331446    </xsl:when>
    14341447
    1435     <xsl:when test="//enum[@name=$idltype]">
     1448    <xsl:when test="count(key('G_keyEnumsByName', $idltype)) > 0">
    14361449      <xsl:choose>
    14371450        <xsl:when test="$safearray='yes'">
     
    15181531  <xsl:param name="safearray"/>
    15191532  <xsl:variable name="isstruct"
    1520                 select="//interface[@name=$idltype]/@wsmap='struct'" />
     1533                select="key('G_keyInterfacesByName', $idltype)/@wsmap='struct'" />
    15211534
    15221535  <xsl:variable name="gluetype">
     
    15381551
    15391552  <xsl:choose>
    1540     <xsl:when test="//interface[@name=$idltype] or $idltype='$unknown'">
     1553    <xsl:when test="$idltype = '$unknown' or (count(key('G_keyInterfacesByName', $idltype)) > 0)">
    15411554      <xsl:choose>
    15421555        <xsl:when test="@safearray='yes'">
     
    15491562    </xsl:when>
    15501563
    1551     <xsl:when test="//enum[@name=$idltype]">
     1564    <xsl:when test="count(key('G_keyEnumsByName', $idltype)) > 0">
    15521565      <xsl:choose>
    15531566        <xsl:when test="$safearray='yes'">
     
    17061719      </xsl:variable>
    17071720      <xsl:variable name="portArg">
    1708         <xsl:if test="not(//interface[@name=$ifname]/@wsmap='global')">
     1721        <xsl:if test="not(key('G_keyInterfacesByName', $ifname)/@wsmap='global')">
    17091722          <xsl:text>obj</xsl:text>
    17101723        </xsl:if>
     
    25362549
    25372550      <xsl:otherwise>
    2538         <xsl:variable name="extends" select="//interface[@name=$ifname]/@extends" />
     2551        <xsl:variable name="extends" select="key('G_keyInterfacesByName', $ifname)/@extends" />
    25392552        <xsl:choose>
    25402553          <xsl:when test="($extends = '$unknown') or ($extends = '$errorinfo')">
     
    25422555            <xsl:text>{&#10;&#10;</xsl:text>
    25432556          </xsl:when>
    2544           <xsl:when test="//interface[@name=$extends]">
     2557          <xsl:when test="count(key('G_keyInterfacesByName', $extends)) > 0">
    25452558            <xsl:value-of select="concat('public class ', $ifname, ' extends ', $extends, '&#10;')" />
    25462559            <xsl:text>{&#10;&#10;</xsl:text>
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette