7 #include <java/lang/Object.h>
9 #include "getmethodname.h"
12 print_error (jvmtiEnv
*env
, const char *msg
, jvmtiError err
)
15 env
->GetErrorName (err
, &error_msg
);
16 printf ("%s: %s\n", msg
, error_msg
);
17 env
->Deallocate (reinterpret_cast<unsigned char *> (error_msg
));
21 static const char *function_names
[] = { "clone",
30 function_index (const char *name
)
32 for (int i
= 0; i
< NUM_METHODS
; ++i
)
34 if (strcmp (function_names
[i
], name
) == 0)
42 getmethodname::do_getmethodname_tests ()
45 JavaVM
*vm
= _Jv_GetJavaVM ();
46 vm
->GetEnv (reinterpret_cast<void **> (&env
), JVMTI_VERSION_1_0
);
49 err
= env
->GetMethodName (reinterpret_cast<jmethodID
> (NULL
),
50 reinterpret_cast<char **> (NULL
),
51 reinterpret_cast<char **> (NULL
),
52 reinterpret_cast<char **> (NULL
));
53 print_error (env
, "null jmethodID", err
);
57 err
= env
->GetClassMethods (&java::lang::Object::class$
, &count
, &methods
);
58 print_error (env
, "GetClassMethods", err
);
60 char *names
[NUM_METHODS
], *solo_names
[NUM_METHODS
];
61 char *signatures
[NUM_METHODS
], *solo_signatures
[NUM_METHODS
];
62 char *generics
[NUM_METHODS
], *solo_generics
[NUM_METHODS
];
64 for (jint i
= 0; i
< count
; ++i
)
69 err
= env
->GetMethodName (methods
[i
], &name
, &signature
, &generic
);
72 if (err
!= JVMTI_ERROR_NONE
)
74 print_error (env
, "GetMethodName - all fields", err
);
78 idx
= function_index (name
);
83 signatures
[idx
] = signature
;
84 generics
[idx
] = generic
;
86 err
= env
->GetMethodName (methods
[i
], &n
, NULL
, NULL
);
87 print_error (env
, "GetMethodName - name", err
);
90 err
= env
->GetMethodName (methods
[i
], NULL
, &s
, NULL
);
91 print_error (env
, "GetMethodName - signature", err
);
92 solo_signatures
[idx
] = s
;
94 err
= env
->GetMethodName (methods
[i
], NULL
, NULL
, &g
);
95 print_error (env
, "GetMethodName - generic", err
);
96 solo_generics
[idx
] = g
;
99 #define WRAP(X) ((X) == NULL ? "null" : (X))
100 #define MATCH(X,Y) (strcmp ((X),(Y)) == 0 ? "match" : "do not match")
101 for (int i
= 0; i
< NUM_METHODS
; ++i
)
103 printf ("name=%s, signature=%s, generic=%s\n",
104 WRAP (names
[i
]), WRAP (signatures
[i
]), WRAP (generics
[i
]));
105 printf ("names %s\n", MATCH (solo_names
[i
], names
[i
]));
106 printf ("signatures %s\n", MATCH (solo_signatures
[i
], signatures
[i
]));
107 printf ("generic %s\n", "not yet");
109 env
->Deallocate (reinterpret_cast<unsigned char *> (names
[i
]));
110 env
->Deallocate (reinterpret_cast<unsigned char *> (solo_names
[i
]));
111 env
->Deallocate (reinterpret_cast<unsigned char *> (signatures
[i
]));
112 env
->Deallocate (reinterpret_cast<unsigned char *> (solo_signatures
[i
]));
113 env
->Deallocate (reinterpret_cast<unsigned char *> (generics
[i
]));
114 env
->Deallocate (reinterpret_cast<unsigned char *> (solo_generics
[i
]));