43 while (p != NULL && !p->contains(pc)) p = p->_next; 44 // p == NULL || p->contains(pc) 45 return p; 46 } 47 48 49 StubCodeDesc* StubCodeDesc::desc_for_index(int index) { 50 StubCodeDesc* p = _list; 51 while (p != NULL && p->index() != index) p = p->_next; 52 return p; 53 } 54 55 56 const char* StubCodeDesc::name_for(address pc) { 57 StubCodeDesc* p = desc_for(pc); 58 return p == NULL ? NULL : p->name(); 59 } 60 61 62 void StubCodeDesc::print_on(outputStream* st) const { 63 st->print(group()); 64 st->print("::"); 65 st->print(name()); 66 st->print(" [" INTPTR_FORMAT ", " INTPTR_FORMAT "[ (%d bytes)", begin(), end(), size_in_bytes()); 67 } 68 69 // Implementation of StubCodeGenerator 70 71 StubCodeGenerator::StubCodeGenerator(CodeBuffer* code, bool print_code) { 72 _masm = new MacroAssembler(code); 73 _first_stub = _last_stub = NULL; 74 _print_code = print_code; 75 } 76 77 extern "C" { 78 static int compare_cdesc(const void* void_a, const void* void_b) { 79 int ai = (*((StubCodeDesc**) void_a))->index(); 80 int bi = (*((StubCodeDesc**) void_b))->index(); 81 return ai - bi; 82 } 83 } 84 85 StubCodeGenerator::~StubCodeGenerator() { 86 if (PrintStubCode || _print_code) { | 43 while (p != NULL && !p->contains(pc)) p = p->_next; 44 // p == NULL || p->contains(pc) 45 return p; 46 } 47 48 49 StubCodeDesc* StubCodeDesc::desc_for_index(int index) { 50 StubCodeDesc* p = _list; 51 while (p != NULL && p->index() != index) p = p->_next; 52 return p; 53 } 54 55 56 const char* StubCodeDesc::name_for(address pc) { 57 StubCodeDesc* p = desc_for(pc); 58 return p == NULL ? NULL : p->name(); 59 } 60 61 62 void StubCodeDesc::print_on(outputStream* st) const { 63 st->print_raw(group()); 64 st->print("::"); 65 st->print_raw(name()); 66 st->print(" [" INTPTR_FORMAT ", " INTPTR_FORMAT "[ (%d bytes)", p2i(begin()), p2i(end()), size_in_bytes()); 67 } 68 69 // Implementation of StubCodeGenerator 70 71 StubCodeGenerator::StubCodeGenerator(CodeBuffer* code, bool print_code) { 72 _masm = new MacroAssembler(code); 73 _first_stub = _last_stub = NULL; 74 _print_code = print_code; 75 } 76 77 extern "C" { 78 static int compare_cdesc(const void* void_a, const void* void_b) { 79 int ai = (*((StubCodeDesc**) void_a))->index(); 80 int bi = (*((StubCodeDesc**) void_b))->index(); 81 return ai - bi; 82 } 83 } 84 85 StubCodeGenerator::~StubCodeGenerator() { 86 if (PrintStubCode || _print_code) { |