< prev index next >

src/cpu/sparc/vm/templateTable_sparc.cpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 3354,3365 **** #else __ srl(RfreeValue, LogHeapWordSize, RfreeValue); #endif __ cmp_and_brx_short(RtlabWasteLimitValue, RfreeValue, Assembler::greaterEqualUnsigned, Assembler::pt, slow_case); // tlab waste is small // increment waste limit to prevent getting stuck on this slow path ! __ add(RtlabWasteLimitValue, ThreadLocalAllocBuffer::refill_waste_limit_increment(), RtlabWasteLimitValue); __ st_ptr(RtlabWasteLimitValue, G2_thread, in_bytes(JavaThread::tlab_refill_waste_limit_offset())); } else { // No allocation in the shared eden. __ ba_short(slow_case); } --- 3354,3369 ---- #else __ srl(RfreeValue, LogHeapWordSize, RfreeValue); #endif __ cmp_and_brx_short(RtlabWasteLimitValue, RfreeValue, Assembler::greaterEqualUnsigned, Assembler::pt, slow_case); // tlab waste is small + // set64 does not use the temp register if the given constant is 32 bit. So + // we can just use any register; using G0 results in ignoring of the upper 32 bit + // of that value. + __ set64(ThreadLocalAllocBuffer::refill_waste_limit_increment(), G4_scratch, G0); // increment waste limit to prevent getting stuck on this slow path ! __ add(RtlabWasteLimitValue, G4_scratch, RtlabWasteLimitValue); __ st_ptr(RtlabWasteLimitValue, G2_thread, in_bytes(JavaThread::tlab_refill_waste_limit_offset())); } else { // No allocation in the shared eden. __ ba_short(slow_case); }
< prev index next >