Skip to content

Commit

Permalink
fix kompos test
Browse files Browse the repository at this point in the history
  • Loading branch information
daumayr committed Jul 16, 2018
1 parent 926e039 commit 9d17267
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 12 deletions.
2 changes: 1 addition & 1 deletion src/som/interpreter/actors/Actor.java
Expand Up @@ -61,7 +61,7 @@ public static void initializeActorSystem(final SomLanguage lang) {
}

public static Actor createActor(final VM vm) {
if (VmSettings.REPLAY) {
if (VmSettings.REPLAY || VmSettings.KOMPOS_TRACING) {
return new ReplayActor(vm);
} else if (VmSettings.ACTOR_TRACING) {
return new TracingActor(vm);
Expand Down
6 changes: 3 additions & 3 deletions src/som/interpreter/processes/SChannel.java
Expand Up @@ -16,7 +16,7 @@
public class SChannel extends SAbstractObject {

public static SChannel create() {
if (VmSettings.ACTOR_TRACING) {
if (VmSettings.KOMPOS_TRACING) {
return new TracingChannel();
} else {
return new SChannel();
Expand Down Expand Up @@ -60,7 +60,7 @@ public boolean isValue() {
public static class SChannelInput extends SAbstractObject {
public static SChannelInput create(final SynchronousQueue<Object> cell,
final SChannel channel) {
if (VmSettings.ACTOR_TRACING) {
if (VmSettings.KOMPOS_TRACING) {
return new TracingChannelInput(cell, channel);
} else {
return new SChannelInput(cell, channel);
Expand Down Expand Up @@ -106,7 +106,7 @@ public final boolean isValue() {
public static class SChannelOutput extends SAbstractObject {
public static SChannelOutput create(final SynchronousQueue<Object> cell,
final SChannel channel) {
if (VmSettings.ACTOR_TRACING) {
if (VmSettings.KOMPOS_TRACING) {
return new TracingChannelOutput(cell, channel);
} else {
return new SChannelOutput(cell, channel);
Expand Down
4 changes: 2 additions & 2 deletions src/tools/concurrency/TraceBuffer.java
Expand Up @@ -6,10 +6,10 @@

public abstract class TraceBuffer {

public static TraceBuffer create() {
public static TraceBuffer create(final long threadId) {
assert VmSettings.ACTOR_TRACING || VmSettings.KOMPOS_TRACING;
if (VmSettings.TRUFFLE_DEBUGGER_ENABLED) {
return KomposTrace.KomposTraceBuffer.create();
return new KomposTrace.KomposTraceBuffer(threadId);
} else {
return new ActorTraceBuffer();
}
Expand Down
2 changes: 1 addition & 1 deletion src/tools/concurrency/TracingActivityThread.java
Expand Up @@ -48,8 +48,8 @@ private static class ConcurrentEntityScope {
public TracingActivityThread(final ForkJoinPool pool) {
super(pool);
if (VmSettings.ACTOR_TRACING || VmSettings.KOMPOS_TRACING) {
traceBuffer = TraceBuffer.create();
threadId = threadIdGen.getAndIncrement();
traceBuffer = TraceBuffer.create(threadId);
nextEntityId = 1 + (threadId << TraceData.ENTITY_ID_BITS);
externalData = new Object[EXTERNAL_BUFFER_SIZE];
} else {
Expand Down
24 changes: 19 additions & 5 deletions src/tools/concurrency/TracingActors.java
Expand Up @@ -123,7 +123,7 @@ public int getNextTraceBufferId() {
}

private static int lookupId() {
if (Thread.currentThread() instanceof ActorProcessingThread) {
if (VmSettings.REPLAY && Thread.currentThread() instanceof ActorProcessingThread) {
ActorProcessingThread t = (ActorProcessingThread) Thread.currentThread();
ReplayActor parent = (ReplayActor) t.currentMessage.getTarget();
int parentId = parent.getActorId();
Expand All @@ -143,24 +143,38 @@ public long getId() {
public ReplayActor(final VM vm) {
super(vm, lookupId());

expectedMessages = TraceParser.getExpectedMessages(actorId);
this.activityId = TracingActivityThread.newEntityId();

synchronized (actorList) {
actorList.put(actorId, this);
if (VmSettings.REPLAY) {
expectedMessages = TraceParser.getExpectedMessages(actorId);

synchronized (actorList) {
actorList.put(actorId, this);
}
} else {
expectedMessages = null;
}
}

@Override
protected ExecAllMessages createExecutor(final VM vm) {
return new ExecAllMessagesReplay(this, vm);
if (VmSettings.REPLAY) {
return new ExecAllMessagesReplay(this, vm);
} else {
return super.createExecutor(vm);
}
}

@Override
@TruffleBoundary
public synchronized void send(final EventualMessage msg, final ForkJoinPool actorPool) {
assert msg.getTarget() == this;

if (!VmSettings.REPLAY) {
super.send(msg, actorPool);
return;
}

if (firstMessage == null) {
firstMessage = msg;
} else {
Expand Down

0 comments on commit 9d17267

Please sign in to comment.