# HG changeset patch # User Jaroslav Tulach # Date 1399453507 -7200 # Node ID 50991eae72d4365c7eb734a0485a5aecfaa45a2a # Parent f75ee66cfc2fdb4d8a768eea52d4e5be8ca31b4e Testing behavior of second constructor on the stack diff -r f75ee66cfc2f -r 50991eae72d4 rt/vm/src/test/java/org/apidesign/vm4brwsr/SizeOfAMethodTest.java --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/SizeOfAMethodTest.java Wed May 07 10:45:42 2014 +0200 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/SizeOfAMethodTest.java Wed May 07 11:05:07 2014 +0200 @@ -64,6 +64,19 @@ assertEquals(method.indexOf("stA1"), -1, "No need for stA1 register:\n" + method); } + @Test public void deepConstructor() { + String s = code; + int beg = s.indexOf("c.intHolder__I"); + int end = s.indexOf("c.intHolder__I.access"); + + assertTrue(beg > 0, "Found intHolder method in " + code); + assertTrue(beg < end, "Found end of intHolder method in " + code); + + String method = s.substring(beg, end); + + assertEquals(method.indexOf("stA3"), -1, "No need for stA3 register on second constructor:\n" + method); + } + @Test public void emptyConstructorRequiresNoStack() { String s = code; int beg = s.indexOf("CLS.cons__V"); diff -r f75ee66cfc2f -r 50991eae72d4 rt/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethod.java --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethod.java Wed May 07 10:45:42 2014 +0200 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethod.java Wed May 07 11:05:07 2014 +0200 @@ -142,6 +142,18 @@ return i.sum(nowrap?-w:w, 1); } + public static int intHolder() { + return new IntHolder(new Integer(10)).i.intValue(); + } + + private static class IntHolder { + Integer i; + + public IntHolder(Integer i) { + this.i = i; + } + } + public static String toStringArr() { class N implements Next { int idx = 0;