hotspot/src/cpu/x86/vm/vmreg_x86.hpp
changeset 25715 d5a8dbdc5150
parent 7397 5b173b4ca846
child 30624 2e1803c8a26d
equal deleted inserted replaced
25469:3bcfa1db9717 25715:d5a8dbdc5150
    23  */
    23  */
    24 
    24 
    25 #ifndef CPU_X86_VM_VMREG_X86_HPP
    25 #ifndef CPU_X86_VM_VMREG_X86_HPP
    26 #define CPU_X86_VM_VMREG_X86_HPP
    26 #define CPU_X86_VM_VMREG_X86_HPP
    27 
    27 
    28   bool is_Register();
       
    29   Register as_Register();
       
    30 
    28 
    31   bool is_FloatRegister();
       
    32   FloatRegister as_FloatRegister();
       
    33 
    29 
    34   bool is_XMMRegister();
    30 inline bool is_Register() {
    35   XMMRegister as_XMMRegister();
    31   return (unsigned int) value() < (unsigned int) ConcreteRegisterImpl::max_gpr;
       
    32 }
       
    33 
       
    34 inline bool is_FloatRegister() {
       
    35   return value() >= ConcreteRegisterImpl::max_gpr && value() < ConcreteRegisterImpl::max_fpr;
       
    36 }
       
    37 
       
    38 inline bool is_XMMRegister() {
       
    39   return value() >= ConcreteRegisterImpl::max_fpr && value() < ConcreteRegisterImpl::max_xmm;
       
    40 }
       
    41 
       
    42 inline Register as_Register() {
       
    43 
       
    44   assert( is_Register(), "must be");
       
    45   // Yuk
       
    46 #ifdef AMD64
       
    47   return ::as_Register(value() >> 1);
       
    48 #else
       
    49   return ::as_Register(value());
       
    50 #endif // AMD64
       
    51 }
       
    52 
       
    53 inline FloatRegister as_FloatRegister() {
       
    54   assert( is_FloatRegister() && is_even(value()), "must be" );
       
    55   // Yuk
       
    56   return ::as_FloatRegister((value() - ConcreteRegisterImpl::max_gpr) >> 1);
       
    57 }
       
    58 
       
    59 inline XMMRegister as_XMMRegister() {
       
    60   assert( is_XMMRegister() && is_even(value()), "must be" );
       
    61   // Yuk
       
    62   return ::as_XMMRegister((value() - ConcreteRegisterImpl::max_fpr) >> 3);
       
    63 }
       
    64 
       
    65 inline   bool is_concrete() {
       
    66   assert(is_reg(), "must be");
       
    67 #ifndef AMD64
       
    68   if (is_Register()) return true;
       
    69 #endif // AMD64
       
    70   return is_even(value());
       
    71 }
    36 
    72 
    37 #endif // CPU_X86_VM_VMREG_X86_HPP
    73 #endif // CPU_X86_VM_VMREG_X86_HPP