Mercurial > hg > graal-jvmci-8
diff src/gpu/hsail/vm/gpu_hsail.cpp @ 15609:66d31e70bd79
HSAIL: fixed deopt bug; cleaned up C++ code
Contributed-by: Tom Deneau <tom.deneau@amd.com>
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 13 May 2014 14:35:15 +0200 |
parents | 063ec2920d21 |
children | 66a9286203a2 |
line wrap: on
line diff
--- a/src/gpu/hsail/vm/gpu_hsail.cpp Tue May 13 11:55:11 2014 +0200 +++ b/src/gpu/hsail/vm/gpu_hsail.cpp Tue May 13 14:35:15 2014 +0200 @@ -392,19 +392,16 @@ // Reset the kernel arguments _okra_clearargs(kernel); - // get how many bytes per deopt save area are required - int saveAreaCounts = OopSaver::getSaveAreaCounts(oop_map_array); - int numSRegs = saveAreaCounts & 0xff; - int numDRegs = (saveAreaCounts >> 8) & 0xff; - int numStackSlots = (saveAreaCounts >> 16); - int bytesPerSaveArea = numSRegs * 4 + (numDRegs + numStackSlots) * 8; - HSAILDeoptimizationInfo* e; if (UseHSAILDeoptimization) { - e = new (MAX_DEOPT_SLOTS, bytesPerSaveArea) HSAILDeoptimizationInfo(MAX_DEOPT_SLOTS, bytesPerSaveArea); - e->set_never_ran_array(NEW_C_HEAP_ARRAY(jboolean, dimX, mtInternal)); - memset(e->never_ran_array(), 0, dimX * sizeof(jboolean)); - e->set_donor_threads(donorThreads); + // get how many bytes per deopt save area are required + int saveAreaCounts = OopSaver::getSaveAreaCounts(oop_map_array); + int numSRegs = saveAreaCounts & 0xff; + int numDRegs = (saveAreaCounts >> 8) & 0xff; + int numStackSlots = (saveAreaCounts >> 16); + int bytesPerSaveArea = numSRegs * 4 + (numDRegs + numStackSlots) * 8; + + e = new (MAX_DEOPT_SLOTS, bytesPerSaveArea) HSAILDeoptimizationInfo(MAX_DEOPT_SLOTS, bytesPerSaveArea, dimX, donorThreads); } // This object sets up the kernel arguments @@ -455,7 +452,6 @@ } if (UseHSAILDeoptimization) { - kernelStats.incDeopts(); // check if any workitem requested a deopt int deoptcode = e->deopt_occurred(); if (deoptcode != 1) { @@ -470,6 +466,7 @@ guarantee(deoptcode == 1, msg); } } else { + kernelStats.incDeopts(); { TraceTime t3("handle deoptimizing workitems", TraceGPUInteraction); @@ -586,7 +583,6 @@ } // end of never-ran handling } - FREE_C_HEAP_ARRAY(jboolean, e->never_ran_array(), mtInternal); delete e; } kernelStats.finishDispatch();