Print this page
rev 1022 : 6829192: JSR 292 needs to support 64-bit x86
Summary: changes for method handles and invokedynamic
Reviewed-by: ?, ?

Split Close
Expand all
Collapse all
          --- old/src/cpu/x86/vm/stubGenerator_x86_64.cpp
          +++ new/src/cpu/x86/vm/stubGenerator_x86_64.cpp
↓ open down ↓ 2927 lines elided ↑ open up ↑
2928 2928      StubRoutines::x86::_float_sign_mask  = generate_fp_mask("float_sign_mask",  0x7FFFFFFF7FFFFFFF);
2929 2929      StubRoutines::x86::_float_sign_flip  = generate_fp_mask("float_sign_flip",  0x8000000080000000);
2930 2930      StubRoutines::x86::_double_sign_mask = generate_fp_mask("double_sign_mask", 0x7FFFFFFFFFFFFFFF);
2931 2931      StubRoutines::x86::_double_sign_flip = generate_fp_mask("double_sign_flip", 0x8000000000000000);
2932 2932  
2933 2933      // support for verify_oop (must happen after universe_init)
2934 2934      StubRoutines::_verify_oop_subroutine_entry = generate_verify_oop();
2935 2935  
2936 2936      // arraycopy stubs used by compilers
2937 2937      generate_arraycopy_stubs();
     2938 +
     2939 +    // generic method handle stubs
     2940 +    if (EnableMethodHandles && SystemDictionary::MethodHandle_klass() != NULL) {
     2941 +      for (MethodHandles::EntryKind ek = MethodHandles::_EK_FIRST;
     2942 +           ek < MethodHandles::_EK_LIMIT;
     2943 +           ek = MethodHandles::EntryKind(1 + (int)ek)) {
     2944 +        StubCodeMark mark(this, "MethodHandle", MethodHandles::entry_name(ek));
     2945 +        MethodHandles::generate_method_handle_stub(_masm, ek);
     2946 +      }
     2947 +    }
2938 2948    }
2939 2949  
2940 2950   public:
2941 2951    StubGenerator(CodeBuffer* code, bool all) : StubCodeGenerator(code) {
2942 2952      if (all) {
2943 2953        generate_all();
2944 2954      } else {
2945 2955        generate_initial();
2946 2956      }
2947 2957    }
↓ open down ↓ 19 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX