src/share/vm/opto/macro.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
8153340 Cdiff src/share/vm/opto/macro.cpp
src/share/vm/opto/macro.cpp
Print this page
*** 1895,1905 ****
// adding prefetches
pf_phi_abio->init_req( fall_in_path, i_o );
Node *prefetch_adr;
Node *prefetch;
! uint lines = AllocatePrefetchDistance / AllocatePrefetchStepSize;
uint step_size = AllocatePrefetchStepSize;
uint distance = 0;
for ( uint i = 0; i < lines; i++ ) {
prefetch_adr = new AddPNode( old_pf_wm, new_pf_wmt,
--- 1895,1905 ----
// adding prefetches
pf_phi_abio->init_req( fall_in_path, i_o );
Node *prefetch_adr;
Node *prefetch;
! uint lines = (length != NULL) ? AllocatePrefetchLines : AllocateInstancePrefetchLines;
uint step_size = AllocatePrefetchStepSize;
uint distance = 0;
for ( uint i = 0; i < lines; i++ ) {
prefetch_adr = new AddPNode( old_pf_wm, new_pf_wmt,
*** 1924,1939 ****
needgc_false = pf_region;
contended_phi_rawmem = pf_phi_rawmem;
i_o = pf_phi_abio;
} else if( UseTLAB && AllocatePrefetchStyle == 3 ) {
! // Insert a prefetch for each allocation.
! // This code is used for Sparc with BIS.
! Node *pf_region = new RegionNode(3);
! Node *pf_phi_rawmem = new PhiNode( pf_region, Type::MEMORY,
! TypeRawPtr::BOTTOM );
! transform_later(pf_region);
// Generate several prefetch instructions.
uint lines = (length != NULL) ? AllocatePrefetchLines : AllocateInstancePrefetchLines;
uint step_size = AllocatePrefetchStepSize;
uint distance = AllocatePrefetchDistance;
--- 1924,1935 ----
needgc_false = pf_region;
contended_phi_rawmem = pf_phi_rawmem;
i_o = pf_phi_abio;
} else if( UseTLAB && AllocatePrefetchStyle == 3 ) {
! // Insert a prefetch instruction for each allocation.
! // This code is used for SPARC with BIS.
// Generate several prefetch instructions.
uint lines = (length != NULL) ? AllocatePrefetchLines : AllocateInstancePrefetchLines;
uint step_size = AllocatePrefetchStepSize;
uint distance = AllocatePrefetchDistance;
*** 1942,1952 ****
Node *cache_adr = new AddPNode(old_eden_top, old_eden_top,
_igvn.MakeConX(distance));
transform_later(cache_adr);
cache_adr = new CastP2XNode(needgc_false, cache_adr);
transform_later(cache_adr);
! Node* mask = _igvn.MakeConX(~(intptr_t)(step_size-1));
cache_adr = new AndXNode(cache_adr, mask);
transform_later(cache_adr);
cache_adr = new CastX2PNode(cache_adr);
transform_later(cache_adr);
--- 1938,1949 ----
Node *cache_adr = new AddPNode(old_eden_top, old_eden_top,
_igvn.MakeConX(distance));
transform_later(cache_adr);
cache_adr = new CastP2XNode(needgc_false, cache_adr);
transform_later(cache_adr);
! // BIS instructions require 8-byte aligned addresses
! Node* mask = _igvn.MakeConX(~(intptr_t)(wordSize - 1));
cache_adr = new AndXNode(cache_adr, mask);
transform_later(cache_adr);
cache_adr = new CastX2PNode(cache_adr);
transform_later(cache_adr);
src/share/vm/opto/macro.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File