http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2699

*** shadow/2699 Thu Jul 19 18:29:08 2001
--- shadow/2699.tmp.3124        Fri Jul 20 15:56:14 2001
***************
*** 5,11 ****
  |       Status: NEW                         Version: CurrentCVS              |
  |   Resolution:                            Platform: PC                      |
  |     Severity: Major                    OS/Version: Windows NT/2K           |
! |     Priority: Other                     Component: org.apache.xalan.xsltc  |
  +----------------------------------------------------------------------------+
  |  Assigned To: [EMAIL PROTECTED]                                     |
  |  Reported By: [EMAIL PROTECTED]                                         |
--- 5,11 ----
  |       Status: NEW                         Version: CurrentCVS              |
  |   Resolution:                            Platform: PC                      |
  |     Severity: Major                    OS/Version: Windows NT/2K           |
! |     Priority: Medium                    Component: org.apache.xalan.xsltc  |
  +----------------------------------------------------------------------------+
  |  Assigned To: [EMAIL PROTECTED]                                     |
  |  Reported By: [EMAIL PROTECTED]                                         |
***************
*** 64,66 ****
--- 64,82 ----
  ------- Additional Comments From [EMAIL PROTECTED]  2001-07-19 18:29 -------
  Created an attachment (id=343)
  javap disassembly of translet (compiled with the working codepath).
+ 
+ 
+ ------- Additional Comments From [EMAIL PROTECTED]  2001-07-20 15:56 -------
+ During the compilation of the expression inside <xsl:if test=". = $Node">,  
+ ParameterRef::translate(...) releases the register slot used by the $Node 
+ parameter (slot 5). Then, during the compilation of <xsl:variable name="b" 
+ select="1"/> the compiler then assumes that slot 5 is free - generating codes 
+ to fill it with int 1. At runtime the VM dies (since I presume it won't let you 
+ put an int into a register already containing a ref).
+ 
+ I can thing of two reasons why 5 shouldnt be reused:
+ 1. the ref is initialized outside a loop and used inside,
+ 2. the ref is for a parameter and should only be given up when the scope of the 
+ template ends (arguable, since analysis could show when it s not needed 
+ anymore. Does xsltc do this analysis? Perhaps it doesn't matter since there are 
+ 65536 registers.)

Reply via email to