< prev index next >

src/hotspot/share/runtime/sharedRuntime.cpp

Print this page

        

*** 2291,2301 **** --- 2291,2304 ---- case T_VALUETYPE: { // If value types are passed as fields, return 'in' to differentiate // between a T_VALUETYPE and a T_OBJECT in the signature. return ValueTypePassFieldsAsArgs ? in : adapter_encoding(T_OBJECT, false); } + case T_VALUETYPEPTR: + return T_VALUETYPE; // TODO hack because we don't have enough bits to represent T_VALUETYPEPTR. + case T_OBJECT: case T_ARRAY: // In other words, we assume that any register good enough for // an int or long is good enough for a managed pointer. #ifdef _LP64
*** 2673,2684 **** } else { sig_extended.push(SigEntry(T_OBJECT)); } } for (SignatureStream ss(method->signature()); !ss.at_return_type(); ss.next()) { ! if (ss.type() == T_VALUETYPE) { ! Symbol* name = ss.as_symbol(CHECK_NULL); if (!ValueTypePassFieldsAsArgs) { sig_extended.push(SigEntry(T_VALUETYPEPTR)); } else { // Method handle intrinsics with a __Value argument may be created during // compilation. Only do a full system dictionary lookup if the argument name --- 2676,2687 ---- } else { sig_extended.push(SigEntry(T_OBJECT)); } } for (SignatureStream ss(method->signature()); !ss.at_return_type(); ss.next()) { ! Symbol* sym = ss.as_symbol_or_null(); ! if (sym != NULL && method->method_holder()->is_declared_value_type(sym)) { if (!ValueTypePassFieldsAsArgs) { sig_extended.push(SigEntry(T_VALUETYPEPTR)); } else { // Method handle intrinsics with a __Value argument may be created during // compilation. Only do a full system dictionary lookup if the argument name
< prev index next >