519 setAddressVisitor(oopVisitor); 520 } 521 522 public void setAddressVisitor(AddressVisitor addressVisitor) { 523 this.addressVisitor = addressVisitor; 524 } 525 526 public void visitOopLocation(Address oopAddr) { 527 addressVisitor.visitAddress(oopAddr); 528 } 529 530 public void visitDerivedOopLocation(Address baseOopAddr, Address derivedOopAddr) { 531 if (VM.getVM().isClientCompiler()) { 532 Assert.that(false, "should not reach here"); 533 } else if (VM.getVM().isServerCompiler() && 534 VM.getVM().useDerivedPointerTable()) { 535 Assert.that(false, "FIXME: add derived pointer table"); 536 } 537 } 538 539 public void visitValueLocation(Address valueAddr) { 540 } 541 542 public void visitNarrowOopLocation(Address compOopAddr) { 543 addressVisitor.visitCompOopAddress(compOopAddr); 544 } 545 } 546 547 private void oopsInterpretedDo(AddressVisitor oopVisitor, RegisterMap map) { 548 if (Assert.ASSERTS_ENABLED) { 549 Assert.that(map != null, "map must be set"); 550 } 551 Method m = getInterpreterFrameMethod(); 552 int bci = getInterpreterFrameBCI(); 553 554 // FIXME: Seeing this sometimes 555 if (VM.getVM().isDebugging()) { 556 if (bci < 0 || bci >= m.getCodeSize()) return; 557 } 558 559 if (Assert.ASSERTS_ENABLED) { 560 // Assert.that(VM.getVM().getUniverse().heap().isIn(m), "method must be valid oop"); 561 Assert.that((m.isNative() && (bci == 0)) || ((bci >= 0) && (bci < m.getCodeSize())), "invalid bci value"); | 519 setAddressVisitor(oopVisitor); 520 } 521 522 public void setAddressVisitor(AddressVisitor addressVisitor) { 523 this.addressVisitor = addressVisitor; 524 } 525 526 public void visitOopLocation(Address oopAddr) { 527 addressVisitor.visitAddress(oopAddr); 528 } 529 530 public void visitDerivedOopLocation(Address baseOopAddr, Address derivedOopAddr) { 531 if (VM.getVM().isClientCompiler()) { 532 Assert.that(false, "should not reach here"); 533 } else if (VM.getVM().isServerCompiler() && 534 VM.getVM().useDerivedPointerTable()) { 535 Assert.that(false, "FIXME: add derived pointer table"); 536 } 537 } 538 539 public void visitNarrowOopLocation(Address compOopAddr) { 540 addressVisitor.visitCompOopAddress(compOopAddr); 541 } 542 } 543 544 private void oopsInterpretedDo(AddressVisitor oopVisitor, RegisterMap map) { 545 if (Assert.ASSERTS_ENABLED) { 546 Assert.that(map != null, "map must be set"); 547 } 548 Method m = getInterpreterFrameMethod(); 549 int bci = getInterpreterFrameBCI(); 550 551 // FIXME: Seeing this sometimes 552 if (VM.getVM().isDebugging()) { 553 if (bci < 0 || bci >= m.getCodeSize()) return; 554 } 555 556 if (Assert.ASSERTS_ENABLED) { 557 // Assert.that(VM.getVM().getUniverse().heap().isIn(m), "method must be valid oop"); 558 Assert.that((m.isNative() && (bci == 0)) || ((bci >= 0) && (bci < m.getCodeSize())), "invalid bci value"); |