hotspot/src/share/vm/prims/methodHandles.cpp
changeset 30224 c41bbf9a0e32
parent 29081 c61eb4914428
child 30296 95baefac8485
child 30289 10b7b61d759a
equal deleted inserted replaced
30223:82ab7b6b4927 30224:c41bbf9a0e32
   992 //
   992 //
   993 // Note:  We use a JVM_ENTRY macro to define each of these, for this is the way
   993 // Note:  We use a JVM_ENTRY macro to define each of these, for this is the way
   994 // that intrinsic (non-JNI) native methods are defined in HotSpot.
   994 // that intrinsic (non-JNI) native methods are defined in HotSpot.
   995 //
   995 //
   996 
   996 
   997 JVM_ENTRY(jint, MHN_getConstant(JNIEnv *env, jobject igcls, jint which)) {
       
   998   switch (which) {
       
   999   case MethodHandles::GC_COUNT_GWT:
       
  1000 #ifdef COMPILER2
       
  1001     return true;
       
  1002 #else
       
  1003     return false;
       
  1004 #endif
       
  1005   }
       
  1006   return 0;
       
  1007 }
       
  1008 JVM_END
       
  1009 
       
  1010 #ifndef PRODUCT
   997 #ifndef PRODUCT
  1011 #define EACH_NAMED_CON(template, requirement) \
   998 #define EACH_NAMED_CON(template, requirement) \
  1012     template(MethodHandles,GC_COUNT_GWT) \
       
  1013     template(java_lang_invoke_MemberName,MN_IS_METHOD) \
   999     template(java_lang_invoke_MemberName,MN_IS_METHOD) \
  1014     template(java_lang_invoke_MemberName,MN_IS_CONSTRUCTOR) \
  1000     template(java_lang_invoke_MemberName,MN_IS_CONSTRUCTOR) \
  1015     template(java_lang_invoke_MemberName,MN_IS_FIELD) \
  1001     template(java_lang_invoke_MemberName,MN_IS_FIELD) \
  1016     template(java_lang_invoke_MemberName,MN_IS_TYPE) \
  1002     template(java_lang_invoke_MemberName,MN_IS_TYPE) \
  1017     template(java_lang_invoke_MemberName,MN_CALLER_SENSITIVE) \
  1003     template(java_lang_invoke_MemberName,MN_CALLER_SENSITIVE) \
  1018     template(java_lang_invoke_MemberName,MN_SEARCH_SUPERCLASSES) \
  1004     template(java_lang_invoke_MemberName,MN_SEARCH_SUPERCLASSES) \
  1019     template(java_lang_invoke_MemberName,MN_SEARCH_INTERFACES) \
  1005     template(java_lang_invoke_MemberName,MN_SEARCH_INTERFACES) \
  1020     template(java_lang_invoke_MemberName,MN_REFERENCE_KIND_SHIFT) \
  1006     template(java_lang_invoke_MemberName,MN_REFERENCE_KIND_SHIFT) \
  1021     template(java_lang_invoke_MemberName,MN_REFERENCE_KIND_MASK) \
  1007     template(java_lang_invoke_MemberName,MN_REFERENCE_KIND_MASK) \
  1022     template(MethodHandles,GC_LAMBDA_SUPPORT) \
       
  1023     /*end*/
  1008     /*end*/
  1024 
  1009 
  1025 #define IGNORE_REQ(req_expr) /* req_expr */
  1010 #define IGNORE_REQ(req_expr) /* req_expr */
  1026 #define ONE_PLUS(scope,value) 1+
  1011 #define ONE_PLUS(scope,value) 1+
  1027 static const int con_value_count = EACH_NAMED_CON(ONE_PLUS, IGNORE_REQ) 0;
  1012 static const int con_value_count = EACH_NAMED_CON(ONE_PLUS, IGNORE_REQ) 0;
  1311 // These are the native methods on java.lang.invoke.MethodHandleNatives.
  1296 // These are the native methods on java.lang.invoke.MethodHandleNatives.
  1312 static JNINativeMethod MHN_methods[] = {
  1297 static JNINativeMethod MHN_methods[] = {
  1313   {CC"init",                      CC"("MEM""OBJ")V",                     FN_PTR(MHN_init_Mem)},
  1298   {CC"init",                      CC"("MEM""OBJ")V",                     FN_PTR(MHN_init_Mem)},
  1314   {CC"expand",                    CC"("MEM")V",                          FN_PTR(MHN_expand_Mem)},
  1299   {CC"expand",                    CC"("MEM")V",                          FN_PTR(MHN_expand_Mem)},
  1315   {CC"resolve",                   CC"("MEM""CLS")"MEM,                   FN_PTR(MHN_resolve_Mem)},
  1300   {CC"resolve",                   CC"("MEM""CLS")"MEM,                   FN_PTR(MHN_resolve_Mem)},
  1316   {CC"getConstant",               CC"(I)I",                              FN_PTR(MHN_getConstant)},
       
  1317   //  static native int getNamedCon(int which, Object[] name)
  1301   //  static native int getNamedCon(int which, Object[] name)
  1318   {CC"getNamedCon",               CC"(I["OBJ")I",                        FN_PTR(MHN_getNamedCon)},
  1302   {CC"getNamedCon",               CC"(I["OBJ")I",                        FN_PTR(MHN_getNamedCon)},
  1319   //  static native int getMembers(Class<?> defc, String matchName, String matchSig,
  1303   //  static native int getMembers(Class<?> defc, String matchName, String matchSig,
  1320   //          int matchFlags, Class<?> caller, int skip, MemberName[] results);
  1304   //          int matchFlags, Class<?> caller, int skip, MemberName[] results);
  1321   {CC"getMembers",                CC"("CLS""STRG""STRG"I"CLS"I["MEM")I", FN_PTR(MHN_getMembers)},
  1305   {CC"getMembers",                CC"("CLS""STRG""STRG"I"CLS"I["MEM")I", FN_PTR(MHN_getMembers)},