# HG changeset patch # User minqi # Date 1368199650 25200 # Node ID 59a0620561fac4c524527dbdbe4660c89cef1177 # Parent 64c84d620e5cf0e3ae35424bc6126c6bd31bc42f 8003557: NPG: Klass* const k should be const Klass* k. Summary: With NPG, const KlassOop klass which is in fact a definition converted to Klass* const, which is not the original intention. The right usage is converting them to const Klass*. Reviewed-by: coleenp, kvn Contributed-by: yumin.qi@oracle.com diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/c1/c1_Runtime1.cpp --- a/hotspot/src/share/vm/c1/c1_Runtime1.cpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/c1/c1_Runtime1.cpp Fri May 10 08:27:30 2013 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. 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 @@ -1261,7 +1261,7 @@ if (length == 0) return ac_ok; if (src->is_typeArray()) { - Klass* const klass_oop = src->klass(); + Klass* klass_oop = src->klass(); if (klass_oop != dst->klass()) return ac_failed; TypeArrayKlass* klass = TypeArrayKlass::cast(klass_oop); const int l2es = klass->log2_element_size(); diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/classfile/verifier.cpp --- a/hotspot/src/share/vm/classfile/verifier.cpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/classfile/verifier.cpp Fri May 10 08:27:30 2013 -0700 @@ -362,7 +362,7 @@ } #endif -void ErrorContext::details(outputStream* ss, Method* method) const { +void ErrorContext::details(outputStream* ss, const Method* method) const { if (is_valid()) { ss->print_cr(""); ss->print_cr("Exception Details:"); @@ -435,7 +435,7 @@ ss->print_cr(""); } -void ErrorContext::location_details(outputStream* ss, Method* method) const { +void ErrorContext::location_details(outputStream* ss, const Method* method) const { if (_bci != -1 && method != NULL) { streamIndentor si(ss); const char* bytecode_name = ""; @@ -470,7 +470,7 @@ } } -void ErrorContext::bytecode_details(outputStream* ss, Method* method) const { +void ErrorContext::bytecode_details(outputStream* ss, const Method* method) const { if (method != NULL) { streamIndentor si(ss); ss->indent().print_cr("Bytecode:"); @@ -479,7 +479,7 @@ } } -void ErrorContext::handler_details(outputStream* ss, Method* method) const { +void ErrorContext::handler_details(outputStream* ss, const Method* method) const { if (method != NULL) { streamIndentor si(ss); ExceptionTable table(method); @@ -494,7 +494,7 @@ } } -void ErrorContext::stackmap_details(outputStream* ss, Method* method) const { +void ErrorContext::stackmap_details(outputStream* ss, const Method* method) const { if (method != NULL && method->has_stackmap_table()) { streamIndentor si(ss); ss->indent().print_cr("Stackmap Table:"); diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/classfile/verifier.hpp --- a/hotspot/src/share/vm/classfile/verifier.hpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/classfile/verifier.hpp Fri May 10 08:27:30 2013 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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 @@ -224,7 +224,7 @@ _expected.reset_frame(); } - void details(outputStream* ss, Method* method) const; + void details(outputStream* ss, const Method* method) const; #ifdef ASSERT void print_on(outputStream* str) const { @@ -237,12 +237,12 @@ #endif private: - void location_details(outputStream* ss, Method* method) const; + void location_details(outputStream* ss, const Method* method) const; void reason_details(outputStream* ss) const; void frame_details(outputStream* ss) const; - void bytecode_details(outputStream* ss, Method* method) const; - void handler_details(outputStream* ss, Method* method) const; - void stackmap_details(outputStream* ss, Method* method) const; + void bytecode_details(outputStream* ss, const Method* method) const; + void handler_details(outputStream* ss, const Method* method) const; + void stackmap_details(outputStream* ss, const Method* method) const; }; // A new instance of this class is created for each class being verified diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp Fri May 10 08:27:30 2013 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2013, Oracle and/or its affiliates. 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 @@ -213,7 +213,7 @@ int random_seed = 17; do { while (ParCompactionManager::steal_objarray(which, &random_seed, task)) { - ObjArrayKlass* const k = (ObjArrayKlass*)task.obj()->klass(); + ObjArrayKlass* k = (ObjArrayKlass*)task.obj()->klass(); k->oop_follow_contents(cm, task.obj(), task.index()); cm->follow_marking_stacks(); } diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.cpp --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.cpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.cpp Fri May 10 08:27:30 2013 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2013, Oracle and/or its affiliates. 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 @@ -187,11 +187,8 @@ // Process ObjArrays one at a time to avoid marking stack bloat. ObjArrayTask task; - if (_objarray_stack.pop_overflow(task)) { - ObjArrayKlass* const k = (ObjArrayKlass*)task.obj()->klass(); - k->oop_follow_contents(this, task.obj(), task.index()); - } else if (_objarray_stack.pop_local(task)) { - ObjArrayKlass* const k = (ObjArrayKlass*)task.obj()->klass(); + if (_objarray_stack.pop_overflow(task) || _objarray_stack.pop_local(task)) { + ObjArrayKlass* k = (ObjArrayKlass*)task.obj()->klass(); k->oop_follow_contents(this, task.obj(), task.index()); } } while (!marking_stacks_empty()); diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp --- a/hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp Fri May 10 08:27:30 2013 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. 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 @@ -95,7 +95,7 @@ // Process ObjArrays one at a time to avoid marking stack bloat. if (!_objarray_stack.is_empty()) { ObjArrayTask task = _objarray_stack.pop(); - ObjArrayKlass* const k = (ObjArrayKlass*)task.obj()->klass(); + ObjArrayKlass* k = (ObjArrayKlass*)task.obj()->klass(); k->oop_follow_contents(task.obj(), task.index()); } } while (!_marking_stack.is_empty() || !_objarray_stack.is_empty()); diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/memory/heapInspection.cpp --- a/hotspot/src/share/vm/memory/heapInspection.cpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/memory/heapInspection.cpp Fri May 10 08:27:30 2013 -0700 @@ -154,12 +154,12 @@ } } -uint KlassInfoTable::hash(Klass* p) { +uint KlassInfoTable::hash(const Klass* p) { assert(p->is_metadata(), "all klasses are metadata"); return (uint)(((uintptr_t)p - (uintptr_t)_ref) >> 2); } -KlassInfoEntry* KlassInfoTable::lookup(Klass* const k) { +KlassInfoEntry* KlassInfoTable::lookup(Klass* k) { uint idx = hash(k) % _size; assert(_buckets != NULL, "Allocation failure should have been caught"); KlassInfoEntry* e = _buckets[idx].lookup(k); diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/memory/heapInspection.hpp --- a/hotspot/src/share/vm/memory/heapInspection.hpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/memory/heapInspection.hpp Fri May 10 08:27:30 2013 -0700 @@ -189,15 +189,15 @@ KlassInfoEntry(Klass* k, KlassInfoEntry* next) : _klass(k), _instance_count(0), _instance_words(0), _next(next), _index(-1) {} - KlassInfoEntry* next() { return _next; } - bool is_equal(Klass* k) { return k == _klass; } - Klass* klass() { return _klass; } - long count() { return _instance_count; } + KlassInfoEntry* next() const { return _next; } + bool is_equal(const Klass* k) { return k == _klass; } + Klass* klass() const { return _klass; } + long count() const { return _instance_count; } void set_count(long ct) { _instance_count = ct; } - size_t words() { return _instance_words; } + size_t words() const { return _instance_words; } void set_words(size_t wds) { _instance_words = wds; } void set_index(long index) { _index = index; } - long index() { return _index; } + long index() const { return _index; } int compare(KlassInfoEntry* e1, KlassInfoEntry* e2); void print_on(outputStream* st) const; const char* name() const; @@ -215,7 +215,7 @@ KlassInfoEntry* list() { return _list; } void set_list(KlassInfoEntry* l) { _list = l; } public: - KlassInfoEntry* lookup(Klass* const k); + KlassInfoEntry* lookup(Klass* k); void initialize() { _list = NULL; } void empty(); void iterate(KlassInfoClosure* cic); @@ -231,8 +231,8 @@ HeapWord* _ref; KlassInfoBucket* _buckets; - uint hash(Klass* p); - KlassInfoEntry* lookup(Klass* const k); // allocates if not found! + uint hash(const Klass* p); + KlassInfoEntry* lookup(Klass* k); // allocates if not found! class AllClassesFinder : public KlassClosure { KlassInfoTable *_table; diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/memory/universe.cpp --- a/hotspot/src/share/vm/memory/universe.cpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/memory/universe.cpp Fri May 10 08:27:30 2013 -0700 @@ -1425,25 +1425,25 @@ } -void ActiveMethodOopsCache::add_previous_version(Method* const method) { +void ActiveMethodOopsCache::add_previous_version(Method* method) { assert(Thread::current()->is_VM_thread(), "only VMThread can add previous versions"); // Only append the previous method if it is executing on the stack. if (method->on_stack()) { - if (_prev_methods == NULL) { - // This is the first previous version so make some space. - // Start with 2 elements under the assumption that the class - // won't be redefined much. + if (_prev_methods == NULL) { + // This is the first previous version so make some space. + // Start with 2 elements under the assumption that the class + // won't be redefined much. _prev_methods = new (ResourceObj::C_HEAP, mtClass) GrowableArray(2, true); - } + } - // RC_TRACE macro has an embedded ResourceMark - RC_TRACE(0x00000100, - ("add: %s(%s): adding prev version ref for cached method @%d", - method->name()->as_C_string(), method->signature()->as_C_string(), - _prev_methods->length())); + // RC_TRACE macro has an embedded ResourceMark + RC_TRACE(0x00000100, + ("add: %s(%s): adding prev version ref for cached method @%d", + method->name()->as_C_string(), method->signature()->as_C_string(), + _prev_methods->length())); _prev_methods->append(method); } @@ -1464,16 +1464,17 @@ MetadataFactory::free_metadata(method->method_holder()->class_loader_data(), method); } else { // RC_TRACE macro has an embedded ResourceMark - RC_TRACE(0x00000400, ("add: %s(%s): previous cached method @%d is alive", - method->name()->as_C_string(), method->signature()->as_C_string(), i)); + RC_TRACE(0x00000400, + ("add: %s(%s): previous cached method @%d is alive", + method->name()->as_C_string(), method->signature()->as_C_string(), i)); } } } // end add_previous_version() -bool ActiveMethodOopsCache::is_same_method(Method* const method) const { +bool ActiveMethodOopsCache::is_same_method(const Method* method) const { InstanceKlass* ik = InstanceKlass::cast(klass()); - Method* check_method = ik->method_with_idnum(method_idnum()); + const Method* check_method = ik->method_with_idnum(method_idnum()); assert(check_method != NULL, "sanity check"); if (check_method == method) { // done with the easy case diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/memory/universe.hpp --- a/hotspot/src/share/vm/memory/universe.hpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/memory/universe.hpp Fri May 10 08:27:30 2013 -0700 @@ -90,8 +90,8 @@ ActiveMethodOopsCache() { _prev_methods = NULL; } ~ActiveMethodOopsCache(); - void add_previous_version(Method* const method); - bool is_same_method(Method* const method) const; + void add_previous_version(Method* method); + bool is_same_method(const Method* method) const; }; diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/oops/constantPool.hpp --- a/hotspot/src/share/vm/oops/constantPool.hpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/oops/constantPool.hpp Fri May 10 08:27:30 2013 -0700 @@ -354,7 +354,7 @@ Symbol* klass_name_at(int which); // Returns the name, w/o resolving. - Klass* resolved_klass_at(int which) { // Used by Compiler + Klass* resolved_klass_at(int which) const { // Used by Compiler guarantee(tag_at(which).is_klass(), "Corrupted constant pool"); // Must do an acquire here in case another thread resolved the klass // behind our back, lest we later load stale values thru the oop. diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/oops/instanceKlass.cpp --- a/hotspot/src/share/vm/oops/instanceKlass.cpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/oops/instanceKlass.cpp Fri May 10 08:27:30 2013 -0700 @@ -2724,7 +2724,7 @@ OsrList_lock->unlock(); } -nmethod* InstanceKlass::lookup_osr_nmethod(Method* const m, int bci, int comp_level, bool match_level) const { +nmethod* InstanceKlass::lookup_osr_nmethod(const Method* m, int bci, int comp_level, bool match_level) const { // This is a short non-blocking critical region, so the no safepoint check is ok. OsrList_lock->lock_without_safepoint_check(); nmethod* osr = osr_nmethods_head(); diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/oops/instanceKlass.hpp --- a/hotspot/src/share/vm/oops/instanceKlass.hpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/oops/instanceKlass.hpp Fri May 10 08:27:30 2013 -0700 @@ -739,7 +739,7 @@ void set_osr_nmethods_head(nmethod* h) { _osr_nmethods_head = h; }; void add_osr_nmethod(nmethod* n); void remove_osr_nmethod(nmethod* n); - nmethod* lookup_osr_nmethod(Method* const m, int bci, int level, bool match_level) const; + nmethod* lookup_osr_nmethod(const Method* m, int bci, int level, bool match_level) const; // Breakpoint support (see methods on Method* for details) BreakpointInfo* breakpoints() const { return _breakpoints; }; diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/oops/klass.cpp --- a/hotspot/src/share/vm/oops/klass.cpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/oops/klass.cpp Fri May 10 08:27:30 2013 -0700 @@ -50,7 +50,7 @@ if (_name != NULL) _name->increment_refcount(); } -bool Klass::is_subclass_of(Klass* k) const { +bool Klass::is_subclass_of(const Klass* k) const { // Run up the super chain and check if (this == k) return true; diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/oops/klass.hpp --- a/hotspot/src/share/vm/oops/klass.hpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/oops/klass.hpp Fri May 10 08:27:30 2013 -0700 @@ -395,7 +395,7 @@ virtual klassVtable* vtable() const { return NULL; } // subclass check - bool is_subclass_of(Klass* k) const; + bool is_subclass_of(const Klass* k) const; // subtype check: true if is_subclass_of, or if k is interface and receiver implements it bool is_subtype_of(Klass* k) const { juint off = k->super_check_offset(); diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/oops/method.cpp --- a/hotspot/src/share/vm/oops/method.cpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/oops/method.cpp Fri May 10 08:27:30 2013 -0700 @@ -1581,7 +1581,7 @@ } int Method::highest_comp_level() const { - MethodData* mdo = method_data(); + const MethodData* mdo = method_data(); if (mdo != NULL) { return mdo->highest_comp_level(); } else { @@ -1590,7 +1590,7 @@ } int Method::highest_osr_comp_level() const { - MethodData* mdo = method_data(); + const MethodData* mdo = method_data(); if (mdo != NULL) { return mdo->highest_osr_comp_level(); } else { diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/oops/method.hpp --- a/hotspot/src/share/vm/oops/method.hpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/oops/method.hpp Fri May 10 08:27:30 2013 -0700 @@ -996,7 +996,7 @@ u2 _length; public: - ExceptionTable(Method* m) { + ExceptionTable(const Method* m) { if (m->has_exception_handler()) { _table = m->exception_table_start(); _length = m->exception_table_length(); diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/oops/methodData.hpp --- a/hotspot/src/share/vm/oops/methodData.hpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/oops/methodData.hpp Fri May 10 08:27:30 2013 -0700 @@ -1338,9 +1338,9 @@ void set_would_profile(bool p) { _would_profile = p; } bool would_profile() const { return _would_profile; } - int highest_comp_level() { return _highest_comp_level; } + int highest_comp_level() const { return _highest_comp_level; } void set_highest_comp_level(int level) { _highest_comp_level = level; } - int highest_osr_comp_level() { return _highest_osr_comp_level; } + int highest_osr_comp_level() const { return _highest_osr_comp_level; } void set_highest_osr_comp_level(int level) { _highest_osr_comp_level = level; } int num_loops() const { return _num_loops; } diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/prims/jvm.cpp --- a/hotspot/src/share/vm/prims/jvm.cpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/prims/jvm.cpp Fri May 10 08:27:30 2013 -0700 @@ -1710,7 +1710,7 @@ for (int i = 0; i < num_params; i++) { MethodParametersElement* params = mh->method_parameters_start(); // For a 0 index, give a NULL symbol - Symbol* const sym = 0 != params[i].name_cp_index ? + Symbol* sym = 0 != params[i].name_cp_index ? mh->constants()->symbol_at(params[i].name_cp_index) : NULL; int flags = params[i].flags; oop param = Reflection::new_parameter(reflected_method, i, sym, diff -r 64c84d620e5c -r 59a0620561fa hotspot/src/share/vm/prims/jvmtiTagMap.cpp --- a/hotspot/src/share/vm/prims/jvmtiTagMap.cpp Wed May 08 21:06:46 2013 -0400 +++ b/hotspot/src/share/vm/prims/jvmtiTagMap.cpp Fri May 10 08:27:30 2013 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. 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 @@ -2857,7 +2857,7 @@ // references from the constant pool { - ConstantPool* const pool = ik->constants(); + ConstantPool* pool = ik->constants(); for (int i = 1; i < pool->length(); i++) { constantTag tag = pool->tag_at(i).value(); if (tag.is_string() || tag.is_klass()) {