harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Cheng, BuQi (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HARMONY-5996) [HARMONY][JIT][OPTIMIZER] Assumption in array base address load asscoiated symbolic analysis of dabce caused bug
Date Mon, 13 Oct 2008 10:08:44 GMT

     [ https://issues.apache.org/jira/browse/HARMONY-5996?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Cheng, BuQi updated HARMONY-5996:
---------------------------------

    Attachment:     (was: dabce_fillTemplate_bug_h.patch)

> [HARMONY][JIT][OPTIMIZER] Assumption in array base address load asscoiated symbolic analysis
of dabce caused bug
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-5996
>                 URL: https://issues.apache.org/jira/browse/HARMONY-5996
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows
>            Reporter: Cheng, BuQi
>            Priority: Critical
>
> In function code:
> void DynamicABCE::fillTemplate(ArrayAccessTemplate* arrayAccess, Inst* checkInst) {
> ....
>     Node* node = checkInst->getNode()->getUnconditionalEdgeTarget();
>     for (Inst* inst = (Inst*)node->getFirstInst(); inst != NULL; inst = inst->getNextInst())
{
> ...
>         } else if (opcode == Op_AddScaledIndex &&
>             arrayAccess->index == inst->getSrc(1) && arrayAccess->array
== NULL) {
>             assert(ldBaseInst == NULL);
>             ldBaseInst = inst->getSrc(0)->asSsaOpnd()->getInst();
>             assert(ldBaseInst->getOpcode() == Op_LdArrayBaseAddr);
>             arrayAccess->array = ldBaseInst->getSrc(0)->asSsaOpnd();
>             break;
>         }
>     }
> ...
> }
> The code "assert(ldBaseInst->getOpcode() == Op_LdArrayBaseAddr);" assumes that after
bound checking, the direct target block will access array immediately, and  the array access
instruction in it will use "Op_LdArrayBaseAddr" instruction to access the array base. However,
this kind assumption is very tender.
> In server: scimark.sor.small. 
> After loop peeling,  phi instruction is generated for LDBASE instruction, this time LDVAR
instruction will be used to get the variable from Phi. The assertion will fail and bug will
happen. 
> There may be two kind solutions:
> 1.  In IR building, record the array access information. 
> 2.  Or more accurate symbolic is used to find the array base load instruction.
> Thanks!
> Buqi

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message