< prev index next >

src/hotspot/cpu/x86/assembler_x86.hpp

Print this page
rev 54763 : 8213084: Rework and enhance Print[Opto]Assembly output
Reviewed-by:


 613     call32_operand = 2,          // embedded 32-bit self-relative displacement
 614 #ifndef _LP64
 615     _WhichOperand_limit = 3
 616 #else
 617      narrow_oop_operand = 3,     // embedded 32-bit immediate narrow oop
 618     _WhichOperand_limit = 4
 619 #endif
 620   };
 621 
 622   enum ComparisonPredicate {
 623     eq = 0,
 624     lt = 1,
 625     le = 2,
 626     _false = 3,
 627     neq = 4,
 628     nlt = 5,
 629     nle = 6,
 630     _true = 7
 631   };
 632 











 633 
 634   // NOTE: The general philopsophy of the declarations here is that 64bit versions
 635   // of instructions are freely declared without the need for wrapping them an ifdef.
 636   // (Some dangerous instructions are ifdef's out of inappropriate jvm's.)
 637   // In the .cpp file the implementations are wrapped so that they are dropped out
 638   // of the resulting jvm. This is done mostly to keep the footprint of MINIMAL
 639   // to the size it was prior to merging up the 32bit and 64bit assemblers.
 640   //
 641   // This does mean you'll get a linker/runtime error if you use a 64bit only instruction
 642   // in a 32bit vm. This is somewhat unfortunate but keeps the ifdef noise down.
 643 
 644 private:
 645 
 646   bool _legacy_mode_bw;
 647   bool _legacy_mode_dq;
 648   bool _legacy_mode_vl;
 649   bool _legacy_mode_vlbw;
 650   bool _is_managed;
 651   bool _vector_masking;    // For stub code use only
 652 




 613     call32_operand = 2,          // embedded 32-bit self-relative displacement
 614 #ifndef _LP64
 615     _WhichOperand_limit = 3
 616 #else
 617      narrow_oop_operand = 3,     // embedded 32-bit immediate narrow oop
 618     _WhichOperand_limit = 4
 619 #endif
 620   };
 621 
 622   enum ComparisonPredicate {
 623     eq = 0,
 624     lt = 1,
 625     le = 2,
 626     _false = 3,
 627     neq = 4,
 628     nlt = 5,
 629     nle = 6,
 630     _true = 7
 631   };
 632 
 633   //---<  calculate length of instruction  >---
 634   // As instruction size can't be found out easily on x86/x64,
 635   // we just use '4' for len and maxlen.
 636   // instruction must start at passed address
 637   static unsigned int instr_len(unsigned char *instr) { return 4; }
 638 
 639   //---<  longest instructions  >---
 640   // Max instruction length is not specified in architecture documentation.
 641   // We could use a "safe enough" estimate (15), but just default to
 642   // instruction length guess from above.
 643   static unsigned int instr_maxlen() { return 4; }
 644 
 645   // NOTE: The general philopsophy of the declarations here is that 64bit versions
 646   // of instructions are freely declared without the need for wrapping them an ifdef.
 647   // (Some dangerous instructions are ifdef's out of inappropriate jvm's.)
 648   // In the .cpp file the implementations are wrapped so that they are dropped out
 649   // of the resulting jvm. This is done mostly to keep the footprint of MINIMAL
 650   // to the size it was prior to merging up the 32bit and 64bit assemblers.
 651   //
 652   // This does mean you'll get a linker/runtime error if you use a 64bit only instruction
 653   // in a 32bit vm. This is somewhat unfortunate but keeps the ifdef noise down.
 654 
 655 private:
 656 
 657   bool _legacy_mode_bw;
 658   bool _legacy_mode_dq;
 659   bool _legacy_mode_vl;
 660   bool _legacy_mode_vlbw;
 661   bool _is_managed;
 662   bool _vector_masking;    // For stub code use only
 663 


< prev index next >