src/share/vm/prims/methodHandles.hpp

changeset 1734
9eba43136cb5
parent 1474
987e948ebbc8
child 1739
76c1d7d13ec5
     1.1 --- a/src/share/vm/prims/methodHandles.hpp	Thu Mar 11 05:09:20 2010 -0800
     1.2 +++ b/src/share/vm/prims/methodHandles.hpp	Tue Mar 16 11:52:17 2010 +0100
     1.3 @@ -115,6 +115,10 @@
     1.4    static const char*        _entry_names[_EK_LIMIT+1];
     1.5    static jobject            _raise_exception_method;
     1.6  
     1.7 +  // Adapters.
     1.8 +  static MethodHandlesAdapterBlob* _adapter_code;
     1.9 +  static int                       _adapter_code_size;
    1.10 +
    1.11    static bool ek_valid(EntryKind ek)            { return (uint)ek < (uint)_EK_LIMIT; }
    1.12    static bool conv_op_valid(int op)             { return (uint)op < (uint)CONV_OP_LIMIT; }
    1.13  
    1.14 @@ -230,7 +234,10 @@
    1.15    // bit values for suppress argument to expand_MemberName:
    1.16    enum { _suppress_defc = 1, _suppress_name = 2, _suppress_type = 4 };
    1.17  
    1.18 -  // called from InterpreterGenerator and StubGenerator
    1.19 +  // Generate MethodHandles adapters.
    1.20 +  static void generate_adapters();
    1.21 +
    1.22 +  // Called from InterpreterGenerator and MethodHandlesAdapterGenerator.
    1.23    static address generate_method_handle_interpreter_entry(MacroAssembler* _masm);
    1.24    static void generate_method_handle_stub(MacroAssembler* _masm, EntryKind ek);
    1.25  
    1.26 @@ -447,3 +454,14 @@
    1.27  
    1.28  address MethodHandles::from_compiled_entry(EntryKind ek) { return entry(ek)->from_compiled_entry(); }
    1.29  address MethodHandles::from_interpreted_entry(EntryKind ek) { return entry(ek)->from_interpreted_entry(); }
    1.30 +
    1.31 +
    1.32 +//------------------------------------------------------------------------------
    1.33 +// MethodHandlesAdapterGenerator
    1.34 +//
    1.35 +class MethodHandlesAdapterGenerator : public StubCodeGenerator {
    1.36 +public:
    1.37 +  MethodHandlesAdapterGenerator(CodeBuffer* code) : StubCodeGenerator(code) {}
    1.38 +
    1.39 +  void generate();
    1.40 +};

mercurial