Mercurial > hg > truffle
comparison src/share/vm/prims/wbtestmethods/parserTests.cpp @ 12800:5b3b75d9eb2f
8025570: Naked oop in test/serviceability/ParserTest
Summary: Fix for two naked objArrayOop(s) oops causing test failure
Reviewed-by: coleenp, ctornqvi
Contributed-by: lois.foltan@oracle.com
author | coleenp |
---|---|
date | Tue, 01 Oct 2013 14:23:07 -0400 |
parents | da91efe96a93 |
children |
comparison
equal
deleted
inserted
replaced
12318:36b97be47bde | 12800:5b3b75d9eb2f |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
115 ResourceMark rm; | 115 ResourceMark rm; |
116 DCmdParser parser; | 116 DCmdParser parser; |
117 | 117 |
118 const char* c_cmdline = java_lang_String::as_utf8_string(JNIHandles::resolve(j_cmdline)); | 118 const char* c_cmdline = java_lang_String::as_utf8_string(JNIHandles::resolve(j_cmdline)); |
119 objArrayOop argumentArray = objArrayOop(JNIHandles::resolve_non_null(arguments)); | 119 objArrayOop argumentArray = objArrayOop(JNIHandles::resolve_non_null(arguments)); |
120 objArrayHandle argumentArray_ah(THREAD, argumentArray); | |
120 | 121 |
121 int length = argumentArray->length(); | 122 int length = argumentArray_ah->length(); |
122 | 123 |
123 for (int i = 0; i < length; i++) { | 124 for (int i = 0; i < length; i++) { |
124 oop argument_oop = argumentArray->obj_at(i); | 125 oop argument_oop = argumentArray_ah->obj_at(i); |
125 fill_in_parser(&parser, argument_oop); | 126 fill_in_parser(&parser, argument_oop); |
126 } | 127 } |
127 | 128 |
128 CmdLine cmdline(c_cmdline, strlen(c_cmdline), true); | 129 CmdLine cmdline(c_cmdline, strlen(c_cmdline), true); |
129 parser.parse(&cmdline,',',CHECK_NULL); | 130 parser.parse(&cmdline,',',CHECK_NULL); |
130 | 131 |
131 Klass* k = SystemDictionary::Object_klass(); | 132 Klass* k = SystemDictionary::Object_klass(); |
132 objArrayOop returnvalue_array = oopFactory::new_objArray(k, parser.num_arguments() * 2, CHECK_NULL); | 133 objArrayOop returnvalue_array = oopFactory::new_objArray(k, parser.num_arguments() * 2, CHECK_NULL); |
134 objArrayHandle returnvalue_array_ah(THREAD, returnvalue_array); | |
133 | 135 |
134 GrowableArray<const char *>*parsedArgNames = parser.argument_name_array(); | 136 GrowableArray<const char *>*parsedArgNames = parser.argument_name_array(); |
135 | 137 |
136 for (int i = 0; i < parser.num_arguments(); i++) { | 138 for (int i = 0; i < parser.num_arguments(); i++) { |
137 oop parsedName = java_lang_String::create_oop_from_str(parsedArgNames->at(i), CHECK_NULL); | 139 oop parsedName = java_lang_String::create_oop_from_str(parsedArgNames->at(i), CHECK_NULL); |
138 returnvalue_array->obj_at_put(i*2, parsedName); | 140 returnvalue_array_ah->obj_at_put(i*2, parsedName); |
139 GenDCmdArgument* arg = parser.lookup_dcmd_option(parsedArgNames->at(i), strlen(parsedArgNames->at(i))); | 141 GenDCmdArgument* arg = parser.lookup_dcmd_option(parsedArgNames->at(i), strlen(parsedArgNames->at(i))); |
140 char buf[VALUE_MAXLEN]; | 142 char buf[VALUE_MAXLEN]; |
141 arg->value_as_str(buf, sizeof(buf)); | 143 arg->value_as_str(buf, sizeof(buf)); |
142 oop parsedValue = java_lang_String::create_oop_from_str(buf, CHECK_NULL); | 144 oop parsedValue = java_lang_String::create_oop_from_str(buf, CHECK_NULL); |
143 returnvalue_array->obj_at_put(i*2+1, parsedValue); | 145 returnvalue_array_ah->obj_at_put(i*2+1, parsedValue); |
144 } | 146 } |
145 | 147 |
146 return (jobjectArray) JNIHandles::make_local(returnvalue_array); | 148 return (jobjectArray) JNIHandles::make_local(returnvalue_array_ah()); |
147 | 149 |
148 WB_END | 150 WB_END |