< prev index next >

src/share/vm/code/compiledMethod.cpp

Print this page

        

*** 313,327 **** // If value types are passed as fields, use the extended signature // which contains the types of all (oop) fields of the value type. if (ValueTypePassFieldsAsArgs) { // Check if receiver or one of the arguments is a value type ! bool has_value_receiver = (callee != NULL && callee->method_holder()->is_value()); bool has_value_argument = has_value_receiver; ! const int len = signature->utf8_length(); ! for (int i = 0; i < len && !has_value_argument; ++i) { ! if (signature->byte_at(i) == 'Q') { has_value_argument = true; } } if (has_value_argument) { // Get the extended signature from the callee's adapter through the attached method --- 313,326 ---- // If value types are passed as fields, use the extended signature // which contains the types of all (oop) fields of the value type. if (ValueTypePassFieldsAsArgs) { // Check if receiver or one of the arguments is a value type ! bool has_value_receiver = (has_receiver && callee != NULL && callee->method_holder()->is_value()); bool has_value_argument = has_value_receiver; ! for (SignatureStream ss(signature); !has_value_argument && !ss.at_return_type(); ss.next()) { ! if (ss.type() == T_VALUETYPE) { has_value_argument = true; } } if (has_value_argument) { // Get the extended signature from the callee's adapter through the attached method
< prev index next >