harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "bu qi cheng" <buqi.ch...@gmail.com>
Subject Fwd: [jira] Updated: (HARMONY-5996) [HARMONY][JIT][OPTIMIZER] Assumption in array base address load asscoiated symbolic analysis of dabce caused bug
Date Sun, 12 Oct 2008 01:19:38 GMT
---------- Forwarded message ----------
From: Cheng, BuQi (JIRA) <jira@apache.org>
Date: Sun, Oct 12, 2008 at 2:55 AM
Subject: [jira] Updated: (HARMONY-5996) [HARMONY][JIT][OPTIMIZER] Assumption
in array base address load asscoiated symbolic analysis of dabce caused bug
To: buqi.cheng@gmail.com



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

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

   Component/s: DRLVM

> [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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message