< prev index next >

src/share/vm/gc/cms/parNewGeneration.cpp

Print this page
rev 10559 : imported patch ParNewThreadStateSet

*** 278,288 **** log_trace(gc, promotion)(" (%d: promotion failure size = " SIZE_FORMAT ") ", _thread_num, _promotion_failed_info.first_size()); } } ! class ParScanThreadStateSet: private ResourceArray { public: // Initializes states for the specified number of threads; ParScanThreadStateSet(int num_threads, Space& to_space, ParNewGeneration& young_gen, --- 278,288 ---- log_trace(gc, promotion)(" (%d: promotion failure size = " SIZE_FORMAT ") ", _thread_num, _promotion_failed_info.first_size()); } } ! class ParScanThreadStateSet: private GenericGrowableArray { public: // Initializes states for the specified number of threads; ParScanThreadStateSet(int num_threads, Space& to_space, ParNewGeneration& young_gen,
*** 313,322 **** --- 313,324 ---- private: ParallelTaskTerminator& _term; ParNewGeneration& _young_gen; Generation& _old_gen; + ParScanThreadState* _data; + int length() const { return _len; }; public: bool is_valid(int id) const { return id < length(); } ParallelTaskTerminator* terminator() { return &_term; } };
*** 327,356 **** ObjToScanQueueSet& queue_set, Stack<oop, mtGC>* overflow_stacks, PreservedMarksSet& preserved_marks_set, size_t desired_plab_sz, ParallelTaskTerminator& term) ! : ResourceArray(sizeof(ParScanThreadState), num_threads), _young_gen(young_gen), _old_gen(old_gen), _term(term) { assert(num_threads > 0, "sanity check!"); assert(ParGCUseLocalOverflow == (overflow_stacks != NULL), "overflow_stack allocation mismatch"); // Initialize states. for (int i = 0; i < num_threads; ++i) { ! new ((ParScanThreadState*)_data + i) ParScanThreadState(&to_space, &young_gen, &old_gen, i, &queue_set, overflow_stacks, preserved_marks_set.get(i), desired_plab_sz, term); } } inline ParScanThreadState& ParScanThreadStateSet::thread_state(int i) { assert(i >= 0 && i < length(), "sanity check!"); ! return ((ParScanThreadState*)_data)[i]; } void ParScanThreadStateSet::trace_promotion_failed(const YoungGCTracer* gc_tracer) { for (int i = 0; i < length(); ++i) { if (thread_state(i).promotion_failed()) { --- 329,359 ---- ObjToScanQueueSet& queue_set, Stack<oop, mtGC>* overflow_stacks, PreservedMarksSet& preserved_marks_set, size_t desired_plab_sz, ParallelTaskTerminator& term) ! : GenericGrowableArray(num_threads, num_threads, false, mtInternal), _young_gen(young_gen), _old_gen(old_gen), _term(term) { assert(num_threads > 0, "sanity check!"); assert(ParGCUseLocalOverflow == (overflow_stacks != NULL), "overflow_stack allocation mismatch"); // Initialize states. + _data = (ParScanThreadState*) raw_allocate(sizeof(ParScanThreadState)); for (int i = 0; i < num_threads; ++i) { ! ::new((void*) &_data[i]) ParScanThreadState(&to_space, &young_gen, &old_gen, i, &queue_set, overflow_stacks, preserved_marks_set.get(i), desired_plab_sz, term); } } inline ParScanThreadState& ParScanThreadStateSet::thread_state(int i) { assert(i >= 0 && i < length(), "sanity check!"); ! return _data[i]; } void ParScanThreadStateSet::trace_promotion_failed(const YoungGCTracer* gc_tracer) { for (int i = 0; i < length(); ++i) { if (thread_state(i).promotion_failed()) {
< prev index next >