[prev in list] [next in list] [prev in thread] [next in thread]
List: bcel-user
Subject: Re: from BCEL line back to source
From: Habib <hobbbo () gmail ! com>
Date: 2009-12-20 6:59:45
Message-ID: 98d65f050912192259l29d75ac0j7699bbf6ea8e94ed () mail ! gmail ! com
[Download RAW message or body]
Obviously, the compiler does some simple optimization to convert a !true to
a false. To detect that an ICONST_0 was a !true in the source code, you can
either turn off that optimization (i don't know if there is a javac option
that does that), or simply inspect the source code to detect a "!true"
string. For that you'll need to inspect the Line Number Table (if the class
has been compiled with the -g option) to get the source code line number for
each ICONST_0 instruction. I don't believe that you can do this only usign
bytecode.
On Sun, Dec 20, 2009 at 3:24 AM, Anton Margoline <margant@gmail.com> wrote:
> Is there a good way to catch assignments to specific value in code?
>
>
> public void testB() {
> *boolean o = !true;*
> }
>
> translates to
>
> boolean a = !false;
> public testB() : void
> L0 (0)
> *LINENUMBER 32 L0
> ICONST_0
> ISTORE 1: o*
> L1 (3)
> LINENUMBER 33 L1
> RETURN
> L2 (5)
> LOCALVARIABLE this TestDoubleNegative L0 L2 0
> LOCALVARIABLE o boolean L1 L2 1
> MAXSTACK = 1
> MAXLOCALS = 2
>
> I am particularly interested in getting from ICONST_0 to assignment
> of*!true
> *. Let me know if anyone has an idea how to do this.
> Thanks in Advance!
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic