193 assertTrue(objects[3] == ln2, "Bad oop ln2"); 194 195 objects = WhiteBox.getWhiteBox().getObjectsViaOopIterator(couple); 196 assertTrue(objects.length == 4, "Expected 4 oops"); 197 assertTrue(objects[0] == fn1, "Bad oop fn1"); 198 assertTrue(objects[1] == ln1, "Bad oop ln1"); 199 assertTrue(objects[2] == fn2, "Bad oop fn2"); 200 assertTrue(objects[3] == ln2, "Bad oop ln2"); 201 202 // Array.. 203 objects = WhiteBox.getWhiteBox().getObjectsViaOopIterator(createPeople()); 204 assertTrue(objects.length == NOF_PEOPLE * 2, "Unexpected length: " + objects.length); 205 int o = 0; 206 for (int i = 0; i < NOF_PEOPLE; i++) { 207 assertTrue(objects[o++].equals(firstName(i)), "Bad firstName"); 208 assertTrue(objects[o++].equals(lastName(i)), "Bad lastName"); 209 } 210 211 // Sanity check, FixMe need more test cases 212 objects = testFrameOops(couple); 213 assertTrue(objects.length == 5, "Number of frame oops incorrect = " + objects.length); 214 assertTrue(objects[0] == couple, "Bad oop 0"); 215 assertTrue(objects[1] == fn1, "Bad oop 1"); 216 assertTrue(objects[2] == ln1, "Bad oop 2"); 217 assertTrue(objects[3] == TEST_STRING1, "Bad oop 3"); 218 assertTrue(objects[4] == TEST_STRING2, "Bad oop 4"); 219 220 testFrameOopsVBytecodes(); 221 } 222 223 static final String GET_OOP_MAP_NAME = "getOopMap"; 224 static final String GET_OOP_MAP_DESC = "()[Ljava/lang/Object;"; 225 226 public static Object[] getOopMap() { 227 Object[] oopMap = WhiteBox.getWhiteBox().getObjectsViaFrameOopIterator(2); 228 /* Remove this frame (class mirror for this method), and above class mirror */ 229 Object[] trimmedOopMap = new Object[oopMap.length - 2]; 230 System.arraycopy(oopMap, 2, trimmedOopMap, 0, trimmedOopMap.length); 231 return trimmedOopMap; 232 } 233 234 // Expecting Couple couple, Person couple.onePerson, and Person (created here) 235 public static Object[] testFrameOops(Couple couple) { 236 int someId = 89898; 237 Person person = couple.onePerson; 238 assertTrue(person.getId() == 0, "Bad Person"); 239 Person anotherPerson = Person.create(someId, TEST_STRING1, TEST_STRING2); 240 assertTrue(anotherPerson.getId() == someId, "Bad Person"); | 193 assertTrue(objects[3] == ln2, "Bad oop ln2"); 194 195 objects = WhiteBox.getWhiteBox().getObjectsViaOopIterator(couple); 196 assertTrue(objects.length == 4, "Expected 4 oops"); 197 assertTrue(objects[0] == fn1, "Bad oop fn1"); 198 assertTrue(objects[1] == ln1, "Bad oop ln1"); 199 assertTrue(objects[2] == fn2, "Bad oop fn2"); 200 assertTrue(objects[3] == ln2, "Bad oop ln2"); 201 202 // Array.. 203 objects = WhiteBox.getWhiteBox().getObjectsViaOopIterator(createPeople()); 204 assertTrue(objects.length == NOF_PEOPLE * 2, "Unexpected length: " + objects.length); 205 int o = 0; 206 for (int i = 0; i < NOF_PEOPLE; i++) { 207 assertTrue(objects[o++].equals(firstName(i)), "Bad firstName"); 208 assertTrue(objects[o++].equals(lastName(i)), "Bad lastName"); 209 } 210 211 // Sanity check, FixMe need more test cases 212 objects = testFrameOops(couple); 213 //assertTrue(objects.length == 5, "Number of frame oops incorrect = " + objects.length); 214 //assertTrue(objects[0] == couple, "Bad oop 0"); 215 //assertTrue(objects[1] == fn1, "Bad oop 1"); 216 //assertTrue(objects[2] == ln1, "Bad oop 2"); 217 //assertTrue(objects[3] == TEST_STRING1, "Bad oop 3"); 218 //assertTrue(objects[4] == TEST_STRING2, "Bad oop 4"); 219 220 //testFrameOopsVBytecodes(); 221 } 222 223 static final String GET_OOP_MAP_NAME = "getOopMap"; 224 static final String GET_OOP_MAP_DESC = "()[Ljava/lang/Object;"; 225 226 public static Object[] getOopMap() { 227 Object[] oopMap = WhiteBox.getWhiteBox().getObjectsViaFrameOopIterator(2); 228 /* Remove this frame (class mirror for this method), and above class mirror */ 229 Object[] trimmedOopMap = new Object[oopMap.length - 2]; 230 System.arraycopy(oopMap, 2, trimmedOopMap, 0, trimmedOopMap.length); 231 return trimmedOopMap; 232 } 233 234 // Expecting Couple couple, Person couple.onePerson, and Person (created here) 235 public static Object[] testFrameOops(Couple couple) { 236 int someId = 89898; 237 Person person = couple.onePerson; 238 assertTrue(person.getId() == 0, "Bad Person"); 239 Person anotherPerson = Person.create(someId, TEST_STRING1, TEST_STRING2); 240 assertTrue(anotherPerson.getId() == someId, "Bad Person"); |