hotspot/src/cpu/x86/vm/jniFastGetField_x86_64.cpp
changeset 33589 7cbd1b2c139b
parent 14626 0cf4eccf130f
child 44088 fb5421685295
equal deleted inserted replaced
33580:c2d95df2c54e 33589:7cbd1b2c139b
    49 
    49 
    50 // Warning: do not use rip relative addressing after the first counter load
    50 // Warning: do not use rip relative addressing after the first counter load
    51 // since that may scratch r10!
    51 // since that may scratch r10!
    52 
    52 
    53 address JNI_FastGetField::generate_fast_get_int_field0(BasicType type) {
    53 address JNI_FastGetField::generate_fast_get_int_field0(BasicType type) {
    54   const char *name;
    54   const char *name = NULL;
    55   switch (type) {
    55   switch (type) {
    56     case T_BOOLEAN: name = "jni_fast_GetBooleanField"; break;
    56     case T_BOOLEAN: name = "jni_fast_GetBooleanField"; break;
    57     case T_BYTE:    name = "jni_fast_GetByteField";    break;
    57     case T_BYTE:    name = "jni_fast_GetByteField";    break;
    58     case T_CHAR:    name = "jni_fast_GetCharField";    break;
    58     case T_CHAR:    name = "jni_fast_GetCharField";    break;
    59     case T_SHORT:   name = "jni_fast_GetShortField";   break;
    59     case T_SHORT:   name = "jni_fast_GetShortField";   break;
   109 
   109 
   110   __ ret (0);
   110   __ ret (0);
   111 
   111 
   112   slowcase_entry_pclist[count++] = __ pc();
   112   slowcase_entry_pclist[count++] = __ pc();
   113   __ bind (slow);
   113   __ bind (slow);
   114   address slow_case_addr;
   114   address slow_case_addr = NULL;
   115   switch (type) {
   115   switch (type) {
   116     case T_BOOLEAN: slow_case_addr = jni_GetBooleanField_addr(); break;
   116     case T_BOOLEAN: slow_case_addr = jni_GetBooleanField_addr(); break;
   117     case T_BYTE:    slow_case_addr = jni_GetByteField_addr();    break;
   117     case T_BYTE:    slow_case_addr = jni_GetByteField_addr();    break;
   118     case T_CHAR:    slow_case_addr = jni_GetCharField_addr();    break;
   118     case T_CHAR:    slow_case_addr = jni_GetCharField_addr();    break;
   119     case T_SHORT:   slow_case_addr = jni_GetShortField_addr();   break;
   119     case T_SHORT:   slow_case_addr = jni_GetShortField_addr();   break;
   151 address JNI_FastGetField::generate_fast_get_long_field() {
   151 address JNI_FastGetField::generate_fast_get_long_field() {
   152   return generate_fast_get_int_field0(T_LONG);
   152   return generate_fast_get_int_field0(T_LONG);
   153 }
   153 }
   154 
   154 
   155 address JNI_FastGetField::generate_fast_get_float_field0(BasicType type) {
   155 address JNI_FastGetField::generate_fast_get_float_field0(BasicType type) {
   156   const char *name;
   156   const char *name = NULL;
   157   switch (type) {
   157   switch (type) {
   158     case T_FLOAT:     name = "jni_fast_GetFloatField";     break;
   158     case T_FLOAT:     name = "jni_fast_GetFloatField";     break;
   159     case T_DOUBLE:    name = "jni_fast_GetDoubleField";    break;
   159     case T_DOUBLE:    name = "jni_fast_GetDoubleField";    break;
   160     default:          ShouldNotReachHere();
   160     default:          ShouldNotReachHere();
   161   }
   161   }
   204 
   204 
   205   __ ret (0);
   205   __ ret (0);
   206 
   206 
   207   slowcase_entry_pclist[count++] = __ pc();
   207   slowcase_entry_pclist[count++] = __ pc();
   208   __ bind (slow);
   208   __ bind (slow);
   209   address slow_case_addr;
   209   address slow_case_addr = NULL;
   210   switch (type) {
   210   switch (type) {
   211     case T_FLOAT:     slow_case_addr = jni_GetFloatField_addr();  break;
   211     case T_FLOAT:     slow_case_addr = jni_GetFloatField_addr();  break;
   212     case T_DOUBLE:    slow_case_addr = jni_GetDoubleField_addr();
   212     case T_DOUBLE:    slow_case_addr = jni_GetDoubleField_addr();
   213   }
   213   }
   214   // tail call
   214   // tail call