hoseindoost / decojer

Automatically exported from code.google.com/p/decojer
0 stars 0 forks source link

DecTestFields for jdk 1.1.8 fails in methods #4

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
check:

    public DecTestFields() {
        if (DecTestFields.class$java$lang$String == null) {
        } else {
        }
    }

    public static void main(String[] args) {
        if (DecTestFields.class$java$lang$String == null) {
        } else {
        }
    }
}

Original issue reported on code.google.com by andrePan...@gmail.com on 9 Oct 2011 at 11:50

GoogleCodeExporter commented 8 years ago
This is the pre JDK 1.5-Bytecode (validated, 1.4 has it still) for
StringBuffer.append(String.class)

  // Field descriptor #118 Ljava/lang/Class;
  static synthetic java.lang.Class array$Ljava$lang$String;

...
    12  getstatic org.decojer.cavaj.test.DecTestFields.class$java$lang$String : java.lang.Class [43]
     15  ifnull 24
     18  getstatic org.decojer.cavaj.test.DecTestFields.class$java$lang$String : java.lang.Class [43]
     21  goto 33
     24  ldc <String "java.lang.String"> [14]
     26  invokestatic org.decojer.cavaj.test.DecTestFields.class$(java.lang.String) : java.lang.Class [39]
     29  dup
     30  putstatic org.decojer.cavaj.test.DecTestFields.class$java$lang$String : java.lang.Class [43]
     33  invokevirtual java.lang.StringBuffer.append(java.lang.Object) : java.lang.StringBuffer [33]

Original comment by andrePan...@gmail.com on 11 Oct 2011 at 10:24

GoogleCodeExporter commented 8 years ago
void.class / int.class are like in newer:
    323  getstatic java.lang.Integer.TYPE : java.lang.Class [69]
    326  invokevirtual java.lang.StringBuilder.append(java.lang.Object) : java.lang.StringBuilder [107]

Original comment by andrePan...@gmail.com on 11 Oct 2011 at 10:50

GoogleCodeExporter commented 8 years ago
fix in expression resolver, now we get things like:

protected final Class referenceClassTest3 = (DecTestFields.array$$I == null ? 
(DecTestFields.array$$I = DecTestFields
            .class$("[[I")) : DecTestFields.array$$I).getClass();

...still must reduce this, variable names:

class$<desc.replace(/,$)>
array$$$$dims$$$$<desc.replace(/,$)>

Original comment by andrePan...@gmail.com on 15 Oct 2011 at 11:11

GoogleCodeExporter commented 8 years ago
OK done so far, pre-1.2
final null fields are not initialized properly:

    private final int[][] referenceIntArrayNullTest;

thats a todo.
problem is version only indicates >= 1.3 ...must check for all this versions 
for this very old problem?!

Original comment by andrePan...@gmail.com on 15 Oct 2011 at 9:05

GoogleCodeExporter commented 8 years ago
The change for this is done now.

Original comment by andrePan...@gmail.com on 15 Oct 2011 at 9:21

GoogleCodeExporter commented 8 years ago
reopened...org.eclipse.jdt.core_3.7.0.v_B61.jar has problems,
they use this sequence for class$0:

GET-class$0 DUP CHECK -> (POP Class.forName() DUP PUT-class$0) ->

Original comment by andrePan...@gmail.com on 19 Oct 2011 at 8:39

GoogleCodeExporter commented 8 years ago
and 1.3.1 uses this:
     * GET class$java$lang$String JCND_NE // (PUSH "typeLiteral" INVOKE Class.forName DUP PUT
     * class$java$lang$String GOTO .) \\ (GET class$java$lang$String) .

TODO!

Original comment by andrePan...@gmail.com on 29 Oct 2012 at 8:35

GoogleCodeExporter commented 8 years ago
OK, quick and dirty resolved...later better matcher

Original comment by andrePan...@gmail.com on 4 Nov 2012 at 8:49

GoogleCodeExporter commented 8 years ago

Original comment by andrePan...@gmail.com on 12 Aug 2013 at 2:48