提交 865328fa 编写于 作者: S stefank

Merge

...@@ -4111,7 +4111,7 @@ void CMTask::do_marking_step(double time_target_ms, ...@@ -4111,7 +4111,7 @@ void CMTask::do_marking_step(double time_target_ms,
// bitmap knows by how much we need to move it as it knows its // bitmap knows by how much we need to move it as it knows its
// granularity). // granularity).
assert(_finger < _region_limit, "invariant"); assert(_finger < _region_limit, "invariant");
HeapWord* new_finger = _nextMarkBitMap->nextWord(_finger); HeapWord* new_finger = _nextMarkBitMap->nextObject(_finger);
// Check if bitmap iteration was aborted while scanning the last object // Check if bitmap iteration was aborted while scanning the last object
if (new_finger >= _region_limit) { if (new_finger >= _region_limit) {
giveup_current_region(); giveup_current_region();
......
...@@ -97,7 +97,6 @@ class CMBitMapRO VALUE_OBJ_CLASS_SPEC { ...@@ -97,7 +97,6 @@ class CMBitMapRO VALUE_OBJ_CLASS_SPEC {
HeapWord* limit = NULL) const; HeapWord* limit = NULL) const;
// conversion utilities // conversion utilities
// XXX Fix these so that offsets are size_t's...
HeapWord* offsetToHeapWord(size_t offset) const { HeapWord* offsetToHeapWord(size_t offset) const {
return _bmStartWord + (offset << _shifter); return _bmStartWord + (offset << _shifter);
} }
...@@ -105,8 +104,13 @@ class CMBitMapRO VALUE_OBJ_CLASS_SPEC { ...@@ -105,8 +104,13 @@ class CMBitMapRO VALUE_OBJ_CLASS_SPEC {
return pointer_delta(addr, _bmStartWord) >> _shifter; return pointer_delta(addr, _bmStartWord) >> _shifter;
} }
int heapWordDiffToOffsetDiff(size_t diff) const; int heapWordDiffToOffsetDiff(size_t diff) const;
HeapWord* nextWord(HeapWord* addr) {
return offsetToHeapWord(heapWordToOffset(addr) + 1); // The argument addr should be the start address of a valid object
HeapWord* nextObject(HeapWord* addr) {
oop obj = (oop) addr;
HeapWord* res = addr + obj->size();
assert(offsetToHeapWord(heapWordToOffset(res)) == res, "sanity");
return res;
} }
// debugging // debugging
......
/* /*
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -252,12 +252,10 @@ inline bool CMBitMapRO::iterate(BitMapClosure* cl, MemRegion mr) { ...@@ -252,12 +252,10 @@ inline bool CMBitMapRO::iterate(BitMapClosure* cl, MemRegion mr) {
start_offset = _bm.get_next_one_offset(start_offset, end_offset); start_offset = _bm.get_next_one_offset(start_offset, end_offset);
while (start_offset < end_offset) { while (start_offset < end_offset) {
HeapWord* obj_addr = offsetToHeapWord(start_offset);
oop obj = (oop) obj_addr;
if (!cl->do_bit(start_offset)) { if (!cl->do_bit(start_offset)) {
return false; return false;
} }
HeapWord* next_addr = MIN2(obj_addr + obj->size(), end_addr); HeapWord* next_addr = MIN2(nextObject(offsetToHeapWord(start_offset)), end_addr);
BitMap::idx_t next_offset = heapWordToOffset(next_addr); BitMap::idx_t next_offset = heapWordToOffset(next_addr);
start_offset = _bm.get_next_one_offset(next_offset, end_offset); start_offset = _bm.get_next_one_offset(next_offset, end_offset);
} }
......
...@@ -1813,6 +1813,13 @@ void Arguments::check_deprecated_gcs() { ...@@ -1813,6 +1813,13 @@ void Arguments::check_deprecated_gcs() {
} }
} }
void Arguments::check_deprecated_gc_flags() {
if (FLAG_IS_CMDLINE(MaxGCMinorPauseMillis)) {
warning("Using MaxGCMinorPauseMillis as minor pause goal is deprecated"
"and will likely be removed in future release");
}
}
// Check stack pages settings // Check stack pages settings
bool Arguments::check_stack_pages() bool Arguments::check_stack_pages()
{ {
...@@ -3292,6 +3299,7 @@ jint Arguments::parse(const JavaVMInitArgs* args) { ...@@ -3292,6 +3299,7 @@ jint Arguments::parse(const JavaVMInitArgs* args) {
set_g1_gc_flags(); set_g1_gc_flags();
} }
check_deprecated_gcs(); check_deprecated_gcs();
check_deprecated_gc_flags();
#else // INCLUDE_ALL_GCS #else // INCLUDE_ALL_GCS
assert(verify_serial_gc_flags(), "SerialGC unset"); assert(verify_serial_gc_flags(), "SerialGC unset");
#endif // INCLUDE_ALL_GCS #endif // INCLUDE_ALL_GCS
......
...@@ -414,6 +414,7 @@ class Arguments : AllStatic { ...@@ -414,6 +414,7 @@ class Arguments : AllStatic {
// Check for consistency in the selection of the garbage collector. // Check for consistency in the selection of the garbage collector.
static bool check_gc_consistency(); static bool check_gc_consistency();
static void check_deprecated_gcs(); static void check_deprecated_gcs();
static void check_deprecated_gc_flags();
// Check consistecy or otherwise of VM argument settings // Check consistecy or otherwise of VM argument settings
static bool check_vm_args_consistency(); static bool check_vm_args_consistency();
// Check stack pages settings // Check stack pages settings
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册