Mercurial > hg > graal-compiler
diff src/share/vm/ci/ciMethod.cpp @ 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 | d1605aabd0a1 |
children | c96bf21b756f |
line wrap: on
line diff
--- a/src/share/vm/ci/ciMethod.cpp Wed Apr 08 00:12:59 2009 -0700 +++ b/src/share/vm/ci/ciMethod.cpp Wed Apr 08 10:56:49 2009 -0700 @@ -1,5 +1,5 @@ /* - * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -675,6 +675,30 @@ } // ------------------------------------------------------------------ +// invokedynamic support +// +bool ciMethod::is_method_handle_invoke() { + check_is_loaded(); + bool flag = ((flags().as_int() & JVM_MH_INVOKE_BITS) == JVM_MH_INVOKE_BITS); +#ifdef ASSERT + { + VM_ENTRY_MARK; + bool flag2 = get_methodOop()->is_method_handle_invoke(); + assert(flag == flag2, "consistent"); + } +#endif //ASSERT + return flag; +} + +ciInstance* ciMethod::method_handle_type() { + check_is_loaded(); + VM_ENTRY_MARK; + oop mtype = get_methodOop()->method_handle_type(); + return CURRENT_THREAD_ENV->get_object(mtype)->as_instance(); +} + + +// ------------------------------------------------------------------ // ciMethod::build_method_data // // Generate new methodDataOop objects at compile time.