Fix getter/setter special case codegen

The special-purpose code generators for simple methods that get
or set and instance field and then return require that no throws
are possible.  The previous code incorrectly relied on the first
argument being a "this" pointer, and thus previously null-checked.
This did not take into account the possibility of a static method
which happened to pass an object referece as it's first argument.

The fix is to avoid making any assumptions, but rather rely
solely on the results of the null-check elimination pass which
will correctly recoginize the "this" case.

Change-Id: Icf001a10a19234cf3f4d87cf1baede93fdf0360c
diff --git a/test/083-compiler-regressions/src/Main.java b/test/083-compiler-regressions/src/Main.java
index efd8aa9..f3e84cc 100644
--- a/test/083-compiler-regressions/src/Main.java
+++ b/test/083-compiler-regressions/src/Main.java
@@ -128,12 +128,19 @@
         foo.setBar4(0,0,0,sum);
         sum += foo.getBar5(1,2,3,4,5);
         foo.setBar5(0,0,0,0,sum);
-        if (foo.getBar0() == 39488) {
+        Foo nullFoo = null;
+        try {
+            sum += Foo.barBar(nullFoo);
+        } catch(NullPointerException npe) {
+            sum += 404;
+        }
+        foo.setBar1(sum);
+        if (foo.getBar0() == 39892) {
             System.out.println("getterSetterTest passes");
         }
         else {
             System.out.println("getterSetterTest fails: " + foo.getBar0() +
-                               " (expecting 39488)");
+                               " (expecting 39892)");
         }
     }
 
@@ -8278,6 +8285,11 @@
     private int bar = 1234;
     private long lbar = 1234;
 
+    // Looks similar to a direct method, make sure we're null checking
+    static int barBar(Foo foo) {
+        return foo.bar;
+    }
+
     public int iConst0x1234() {
         return 0x1234;
     }