You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Daniel John Debrunner (JIRA)" <de...@db.apache.org> on 2006/02/03 21:50:06 UTC

[jira] Commented: (DERBY-921) Support 32bit branch offsets for conditional logic in generated code.

    [ http://issues.apache.org/jira/browse/DERBY-921?page=comments#action_12365121 ] 

Daniel John Debrunner commented on DERBY-921:
---------------------------------------------

Basic solution is to turn 

if  X branch using big offset
then code

into

if  NOT X branch to T: (small fixed offset of +8)
GOTO_W big offset
T: then code

and change replace GOTO with GOTO_W when the offset is bigger than 32767.

Full details will be in the code comments for the Conditional class in the change





> Support 32bit branch offsets for conditional logic in generated code.
> ---------------------------------------------------------------------
>
>          Key: DERBY-921
>          URL: http://issues.apache.org/jira/browse/DERBY-921
>      Project: Derby
>         Type: Sub-task
>   Components: Services, SQL
>     Reporter: Daniel John Debrunner
>     Assignee: Daniel John Debrunner
>     Priority: Minor
>      Fix For: 10.2.0.0

>
> Conditionals in generated code (MethodBuilder.conditionalIf and conditionalIfNull) generate code that only supports 16 bit jump offsets for the branch opcode (e.g. IFNONNULL)  or the GOTO opcode. Earlier code now detects the offset being larger than 32767.
> The JVM supports a 32bit jump offset instruction, GOTO_W, this can be used to support jump offsets that are bigger than 16bits (32767) for both the branch opcode
> and the GOTO instruction.
> This allow increasing the number of IN list values as seen in the query in the largeCodeGen test.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira