Mercurial > hg > truffle
diff src/share/vm/utilities/constantTag.hpp @ 1602:136b78722a08
6939203: JSR 292 needs method handle constants
Summary: Add new CP types CONSTANT_MethodHandle, CONSTANT_MethodType; extend 'ldc' bytecode.
Reviewed-by: twisti, never
author | jrose |
---|---|
date | Wed, 09 Jun 2010 18:50:45 -0700 |
parents | c18cbe5936b8 |
children | 083fde3b838e |
line wrap: on
line diff
--- a/src/share/vm/utilities/constantTag.hpp Mon Jun 07 14:17:01 2010 -0700 +++ b/src/share/vm/utilities/constantTag.hpp Wed Jun 09 18:50:45 2010 -0700 @@ -78,13 +78,24 @@ bool is_field_or_method() const { return is_field() || is_method() || is_interface_method(); } bool is_symbol() const { return is_utf8(); } + bool is_method_type() const { return _tag == JVM_CONSTANT_MethodType; } + bool is_method_handle() const { return _tag == JVM_CONSTANT_MethodHandle; } + + constantTag() { + _tag = JVM_CONSTANT_Invalid; + } constantTag(jbyte tag) { assert((tag >= 0 && tag <= JVM_CONSTANT_NameAndType) || + (tag >= JVM_CONSTANT_MethodHandle && tag <= JVM_CONSTANT_MethodType) || (tag >= JVM_CONSTANT_InternalMin && tag <= JVM_CONSTANT_InternalMax), "Invalid constant tag"); _tag = tag; } jbyte value() { return _tag; } + BasicType basic_type() const; // if used with ldc, what kind of value gets pushed? + + const char* internal_name() const; // for error reporting + void print_on(outputStream* st) const PRODUCT_RETURN; };