/*
* Copyright 2012 Phil Pratt-Szeliga and other contributors
* http://chirrup.org/
*
* See the file LICENSE for copying permission.
*/
package org.trifort.rootbeer.testcases.rootbeertest.gpurequired;
import org.trifort.rootbeer.runtime.Kernel;
public class SynchronizedObjectRunOnGpu implements Kernel {
private final SynchronizedObjectShared m_Object;
private final SynchronizedObjectShared m_Object2;
private int int1;
private int int2;
private int int3;
private int int4;
private int int5;
private int int6;
private int int7;
private int int8;
private int int9;
public SynchronizedObjectRunOnGpu(SynchronizedObjectShared obj){
m_Object = obj;
m_Object2 = new SynchronizedObjectShared();
}
@Override
public void gpuMethod() {
int1++;
synchronized(m_Object){
int2++;
synchronized(m_Object2){
int3++;
m_Object.increment(true);
int4++;
synchronized(m_Object2){
int3++;
m_Object.increment(true);
int4++;
}
synchronized(m_Object2){
int3++;
m_Object.increment(true);
int4++;
}
}
synchronized(m_Object2){
int3++;
m_Object.increment(true);
int4++;
}
int5++;
synchronized(m_Object2){
int6++;
m_Object.increment(true);
int7++;
}
int8++;
}
int9++;
synchronized(m_Object){
int2++;
synchronized(m_Object2){
int3++;
m_Object.increment(true);
int4++;
}
int5++;
synchronized(m_Object2){
int6++;
m_Object.increment(true);
int7++;
}
int8++;
}
}
boolean compare(SynchronizedObjectRunOnGpu grhs) {
if(grhs == null){
System.out.println("grhs == null");
return false;
}
if(m_Object.value != grhs.m_Object.value){
System.out.println("value");
System.out.println("lhs: "+m_Object.value);
System.out.println("rhs: "+grhs.m_Object.value);
return false;
}
if(int1 != grhs.int1){
System.out.println("int1");
return false;
}
if(int2 != grhs.int2){
System.out.println("int2");
return false;
}
if(int3 != grhs.int3){
System.out.println("int3");
return false;
}
if(int4 != grhs.int4){
System.out.println("int4");
return false;
}
if(int5 != grhs.int5){
System.out.println("int5");
return false;
}
if(int6 != grhs.int6){
System.out.println("int6");
return false;
}
if(int7 != grhs.int7){
System.out.println("int7");
return false;
}
if(int8 != grhs.int8){
System.out.println("int8");
return false;
}
if(int9 != grhs.int9){
System.out.println("int9");
return false;
}
return true;
}
}