comparison src/share/vm/runtime/sharedRuntime.hpp @ 710:e5b0439ef4ae

6655638: dynamic languages need method handles Summary: initial implementation, with known omissions (x86/64, sparc, compiler optim., c-oops, C++ interp.) Reviewed-by: kvn, twisti, never
author jrose
date Wed, 08 Apr 2009 10:56:49 -0700
parents c89f86385056
children 45463a04ca27
comparison
equal deleted inserted replaced
709:1d037ecd7960 710:e5b0439ef4ae
210 * in order to correctly free the result. 210 * in order to correctly free the result.
211 */ 211 */
212 static char* generate_class_cast_message(JavaThread* thr, const char* name); 212 static char* generate_class_cast_message(JavaThread* thr, const char* name);
213 213
214 /** 214 /**
215 * Fill in the message for a WrongMethodTypeException
216 *
217 * @param thr the current thread
218 * @param mtype (optional) expected method type (or argument class)
219 * @param mhandle (optional) actual method handle (or argument)
220 * @return the dynamically allocated exception message
221 *
222 * BCP for the frame on top of the stack must refer to an
223 * 'invokevirtual' op for a method handle, or an 'invokedyamic' op.
224 * The caller (or one of its callers) must use a ResourceMark
225 * in order to correctly free the result.
226 */
227 static char* generate_wrong_method_type_message(JavaThread* thr,
228 oopDesc* mtype = NULL,
229 oopDesc* mhandle = NULL);
230
231 /** Return non-null if the mtype is a klass or Class, not a MethodType. */
232 static oop wrong_method_type_is_for_single_argument(JavaThread* thr,
233 oopDesc* mtype);
234
235 /**
215 * Fill in the "X cannot be cast to a Y" message for ClassCastException 236 * Fill in the "X cannot be cast to a Y" message for ClassCastException
216 * 237 *
217 * @param name the name of the class of the object attempted to be cast 238 * @param name the name of the class of the object attempted to be cast
218 * @param klass the name of the target klass attempt 239 * @param klass the name of the target klass attempt
240 * @param gripe the specific kind of problem being reported
219 * @return the dynamically allocated exception message (must be freed 241 * @return the dynamically allocated exception message (must be freed
220 * by the caller using a resource mark) 242 * by the caller using a resource mark)
221 * 243 *
222 * This version does not require access the frame, so it can be called 244 * This version does not require access the frame, so it can be called
223 * from interpreted code 245 * from interpreted code
224 * The caller (or one of it's callers) must use a ResourceMark 246 * The caller (or one of it's callers) must use a ResourceMark
225 * in order to correctly free the result. 247 * in order to correctly free the result.
226 */ 248 */
227 static char* generate_class_cast_message(const char* name, const char* klass); 249 static char* generate_class_cast_message(const char* name, const char* klass,
250 const char* gripe = " cannot be cast to ");
228 251
229 // Resolves a call site- may patch in the destination of the call into the 252 // Resolves a call site- may patch in the destination of the call into the
230 // compiled code. 253 // compiled code.
231 static methodHandle resolve_helper(JavaThread *thread, 254 static methodHandle resolve_helper(JavaThread *thread,
232 bool is_virtual, 255 bool is_virtual,