src/share/vm/opto/graphKit.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
6442502 Cdiff src/share/vm/opto/graphKit.cpp
src/share/vm/opto/graphKit.cpp
Print this page
*** 1834,1847 ****
"Only one we handle so far.");
CardTableModRefBS* ct =
(CardTableModRefBS*)(Universe::heap()->barrier_set());
Node *b = _gvn.transform(new (C, 3) URShiftXNode( cast, _gvn.intcon(CardTableModRefBS::card_shift) ));
// We store into a byte array, so do not bother to left-shift by zero
! // Get base of card map
! assert(sizeof(*ct->byte_map_base) == sizeof(jbyte),
! "adjust this code");
! Node *c = makecon(TypeRawPtr::make((address)ct->byte_map_base));
// Combine
Node *sb_ctl = control();
Node *sb_adr = _gvn.transform(new (C, 4) AddPNode( top()/*no base ptr*/, c, b ));
Node *sb_val = _gvn.intcon(0);
// Smash zero into card
--- 1834,1844 ----
"Only one we handle so far.");
CardTableModRefBS* ct =
(CardTableModRefBS*)(Universe::heap()->barrier_set());
Node *b = _gvn.transform(new (C, 3) URShiftXNode( cast, _gvn.intcon(CardTableModRefBS::card_shift) ));
// We store into a byte array, so do not bother to left-shift by zero
! Node *c = byte_map_base_node();
// Combine
Node *sb_ctl = control();
Node *sb_adr = _gvn.transform(new (C, 4) AddPNode( top()/*no base ptr*/, c, b ));
Node *sb_val = _gvn.intcon(0);
// Smash zero into card
*** 3363,3380 ****
// Get the alias_index for raw card-mark memory
const TypePtr* card_type = TypeRawPtr::BOTTOM;
const TypeFunc *tf = OptoRuntime::g1_wb_post_Type();
- // Get the address of the card table
- CardTableModRefBS* ct =
- (CardTableModRefBS*)(Universe::heap()->barrier_set());
- Node *card_table = __ makecon(TypeRawPtr::make((address)ct->byte_map_base));
- // Get base of card map
- assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code");
-
-
// Offsets into the thread
const int index_offset = in_bytes(JavaThread::dirty_card_queue_offset() +
PtrQueue::byte_offset_of_index());
const int buffer_offset = in_bytes(JavaThread::dirty_card_queue_offset() +
PtrQueue::byte_offset_of_buf());
--- 3360,3369 ----
*** 3400,3410 ****
// Divide pointer by card size
Node* card_offset = __ URShiftX( cast, __ ConI(CardTableModRefBS::card_shift) );
// Combine card table base and card offset
! Node *card_adr = __ AddP(no_base, card_table, card_offset );
// If we know the value being stored does it cross regions?
if (val != NULL) {
// Does the store cause us to cross regions?
--- 3389,3399 ----
// Divide pointer by card size
Node* card_offset = __ URShiftX( cast, __ ConI(CardTableModRefBS::card_shift) );
// Combine card table base and card offset
! Node *card_adr = __ AddP(no_base, byte_map_base_node(), card_offset );
// If we know the value being stored does it cross regions?
if (val != NULL) {
// Does the store cause us to cross regions?
src/share/vm/opto/graphKit.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File