Mercurial > hg > graal-jvmci-8
comparison src/share/vm/oops/instanceRefKlass.cpp @ 2264:a97fd181b813
Merge
author | kvn |
---|---|
date | Wed, 23 Feb 2011 11:18:16 -0800 |
parents | e5383553fd4e |
children | 2aa9ddbb9e60 |
comparison
equal
deleted
inserted
replaced
2263:5841dc1964f0 | 2264:a97fd181b813 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1997, 2011, 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. |
342 } else { | 342 } else { |
343 specialized_oop_update_pointers<oop>(this, cm, obj); | 343 specialized_oop_update_pointers<oop>(this, cm, obj); |
344 } | 344 } |
345 return size_helper(); | 345 return size_helper(); |
346 } | 346 } |
347 | |
348 | |
349 template <class T> void | |
350 specialized_oop_update_pointers(ParCompactionManager* cm, oop obj, | |
351 HeapWord* beg_addr, HeapWord* end_addr) { | |
352 T* p; | |
353 T* referent_addr = p = (T*)java_lang_ref_Reference::referent_addr(obj); | |
354 PSParallelCompact::adjust_pointer(p, beg_addr, end_addr); | |
355 T* next_addr = p = (T*)java_lang_ref_Reference::next_addr(obj); | |
356 PSParallelCompact::adjust_pointer(p, beg_addr, end_addr); | |
357 T* discovered_addr = p = (T*)java_lang_ref_Reference::discovered_addr(obj); | |
358 PSParallelCompact::adjust_pointer(p, beg_addr, end_addr); | |
359 debug_only(trace_reference_gc("instanceRefKlass::oop_update_ptrs", obj, | |
360 referent_addr, next_addr, discovered_addr);) | |
361 } | |
362 | |
363 int | |
364 instanceRefKlass::oop_update_pointers(ParCompactionManager* cm, oop obj, | |
365 HeapWord* beg_addr, HeapWord* end_addr) { | |
366 instanceKlass::oop_update_pointers(cm, obj, beg_addr, end_addr); | |
367 if (UseCompressedOops) { | |
368 specialized_oop_update_pointers<narrowOop>(cm, obj, beg_addr, end_addr); | |
369 } else { | |
370 specialized_oop_update_pointers<oop>(cm, obj, beg_addr, end_addr); | |
371 } | |
372 return size_helper(); | |
373 } | |
374 #endif // SERIALGC | 347 #endif // SERIALGC |
375 | 348 |
376 void instanceRefKlass::update_nonstatic_oop_maps(klassOop k) { | 349 void instanceRefKlass::update_nonstatic_oop_maps(klassOop k) { |
377 // Clear the nonstatic oop-map entries corresponding to referent | 350 // Clear the nonstatic oop-map entries corresponding to referent |
378 // and nextPending field. They are treated specially by the | 351 // and nextPending field. They are treated specially by the |