We're updating the issue view to help you get more done. 

PreciseType is set when creating thread temporary registers in the opt compiler

Description

We create thread register operands in the opt compiler by setting the precise type, which is incorrect for any threads that are subclasses of RVMThread (collector threads, etc.).

This has caused very non-intuitive bugs for me when working with collector threads in the refactor.

We probably want to try turning off the precise type and looking at performance. If performance suffers I suggest just putting the collectorContext in RVMThread, making it final and having our system threads just contain an RVMThread rather than being one.

The problem code:

public RegisterOperand makeTROp() {
RegisterOperand trOp = new RegisterOperand(physical.getTR(), TypeReference.Thread);
trOp.setPreciseType();
return trOp;
}

Environment

None

Status

Assignee

Unassigned

Reporter

Daniel Frampton

Labels

None

External issue ID

None

Fix versions

Priority

Medium