802 a->z_br(Z_R14); |
802 a->z_br(Z_R14); |
803 |
803 |
804 address code_end = a->pc(); |
804 address code_end = a->pc(); |
805 a->flush(); |
805 a->flush(); |
806 |
806 |
|
807 cbuf.insts()->set_end(code_end); |
|
808 |
807 // Print the detection code. |
809 // Print the detection code. |
808 bool printVerbose = Verbose || PrintAssembly || PrintStubCode; |
810 bool printVerbose = Verbose || PrintAssembly || PrintStubCode; |
809 if (printVerbose) { |
811 if (printVerbose) { |
810 ttyLocker ttyl; |
812 ttyLocker ttyl; |
811 tty->print_cr("Decoding CPU feature detection stub at " INTPTR_FORMAT " before execution:", p2i(code)); |
813 tty->print_cr("Decoding CPU feature detection stub at " INTPTR_FORMAT " before execution:", p2i(code)); |
812 tty->print_cr("Stub length is %ld bytes, codebuffer reserves %d bytes, %ld bytes spare.", |
814 tty->print_cr("Stub length is %ld bytes, codebuffer reserves %d bytes, %ld bytes spare.", |
813 code_end-code, cbuf_size, cbuf_size-(code_end-code)); |
815 code_end-code, cbuf_size, cbuf_size-(code_end-code)); |
814 |
816 |
815 // Use existing decode function. This enables the [Code] format which is needed to DecodeErrorFile. |
817 // Use existing decode function. This enables the [MachCode] format which is needed to DecodeErrorFile. |
816 Disassembler::decode((u_char*)code, (u_char*)code_end, tty); |
818 Disassembler::decode(&cbuf, code, code_end, tty); |
817 } |
819 } |
818 |
820 |
819 // Prepare for detection code execution and clear work buffer. |
821 // Prepare for detection code execution and clear work buffer. |
820 _nfeatures = 0; |
822 _nfeatures = 0; |
821 _ncipher_features = 0; |
823 _ncipher_features = 0; |