/** * Casts a given traced reference value to the given type, either keeping * its trace value or setting a new one. */ public TracedReferenceValue cast(TracedReferenceValue referenceValue, String type, Clazz referencedClass, boolean alwaysCast) { // Cast the value. ReferenceValue castValue = referenceValue.getReferenceValue().cast(type, referencedClass, valueFactory, alwaysCast); // Trace it. return new TracedReferenceValue(castValue, preserveTraceValueOnCasts ? referenceValue.getTraceValue() : traceValue); }
public ReferenceValue generalize(TracedReferenceValue other) { if (this.equals(other)) { return this; } return new TracedReferenceValue(this.referenceValue.generalize(other.referenceValue), this.traceValue .generalize(other.traceValue)); }
/** * Marks the producing offsets of the given traced reference value. */ private void markEscapingReferenceValues(ReferenceValue referenceValue) { TracedReferenceValue tracedReferenceValue = (TracedReferenceValue)referenceValue; InstructionOffsetValue instructionOffsetValue = tracedReferenceValue.getTraceValue().instructionOffsetValue(); int parameterCount = instructionOffsetValue.instructionOffsetCount(); for (int index = 0; index < parameterCount; index++) { if (!instructionOffsetValue.isMethodParameter(index)) { instanceEscaping[instructionOffsetValue.instructionOffset(index)] = true; } } }
/** * Attaches the current trace value to given reference value. */ public ReferenceValue trace(ReferenceValue referenceValue) { return traceValue != null ? new TracedReferenceValue(referenceValue, traceValue) : referenceValue; } }
/** * Removes the trace value from a given value, if present, returning the * result. */ private Value untrace(Value value) { return value instanceof TracedReferenceValue ? ((TracedReferenceValue)value).getReferenceValue() : value; } }
/** * Marks the producing offsets of the given traced reference value. */ private void markModifiedReferenceValues(ReferenceValue referenceValue) { TracedReferenceValue tracedReferenceValue = (TracedReferenceValue)referenceValue; InstructionOffsetValue instructionOffsetValue = tracedReferenceValue.getTraceValue().instructionOffsetValue(); int parameterCount = instructionOffsetValue.instructionOffsetCount(); for (int index = 0; index < parameterCount; index++) { if (!instructionOffsetValue.isMethodParameter(index)) { instanceModified[instructionOffsetValue.instructionOffset(index)] = true; } } }
/** * Attaches the current trace value to given reference value. */ public ReferenceValue trace(ReferenceValue referenceValue) { return traceValue != null ? new TracedReferenceValue(referenceValue, traceValue) : referenceValue; } }
/** * Removes the trace value from a given value, if present, returning the * result. */ private Value untrace(Value value) { return value instanceof TracedReferenceValue ? ((TracedReferenceValue)value).getReferenceValue() : value; } }
/** * Marks the producing offsets of the given traced reference value. */ private void markReturnedReferenceValues(ReferenceValue referenceValue) { TracedReferenceValue tracedReferenceValue = (TracedReferenceValue)referenceValue; InstructionOffsetValue instructionOffsetValue = tracedReferenceValue.getTraceValue().instructionOffsetValue(); int parameterCount = instructionOffsetValue.instructionOffsetCount(); for (int index = 0; index < parameterCount; index++) { if (!instructionOffsetValue.isMethodParameter(index)) { instanceReturned[instructionOffsetValue.instructionOffset(index)] = true; } } }
/** * Casts a given traced reference value to the given type, either keeping * its trace value or setting a new one. */ public TracedReferenceValue cast(TracedReferenceValue referenceValue, String type, Clazz referencedClass, boolean alwaysCast) { // Cast the value. ReferenceValue castValue = referenceValue.getReferenceValue().cast(type, referencedClass, valueFactory, alwaysCast); // Trace it. return new TracedReferenceValue(castValue, preserveTraceValueOnCasts ? referenceValue.getTraceValue() : traceValue); }
/** * Attaches the current trace value to given reference value. */ public ReferenceValue trace(ReferenceValue referenceValue) { return traceValue != null ? new TracedReferenceValue(referenceValue, traceValue) : referenceValue; } }
public ReferenceValue generalize(TracedReferenceValue other) { if (this.equals(other)) { return this; } return new TracedReferenceValue(this.referenceValue.generalize(other.referenceValue), this.traceValue .generalize(other.traceValue)); }
/** * Removes the trace value from a given value, if present, returning the * result. */ private Value untrace(Value value) { return value instanceof TracedReferenceValue ? ((TracedReferenceValue)value).getReferenceValue() : value; } }
/** * Marks the producing offsets of the given traced reference value. */ private void markEscapingReferenceValues(ReferenceValue referenceValue) { TracedReferenceValue tracedReferenceValue = (TracedReferenceValue)referenceValue; InstructionOffsetValue instructionOffsetValue = tracedReferenceValue.getTraceValue().instructionOffsetValue(); int parameterCount = instructionOffsetValue.instructionOffsetCount(); for (int index = 0; index < parameterCount; index++) { if (!instructionOffsetValue.isMethodParameter(index)) { instanceEscaping[instructionOffsetValue.instructionOffset(index)] = true; } } }
/** * Casts a given traced reference value to the given type, either keeping * its trace value or setting a new one. */ public TracedReferenceValue cast(TracedReferenceValue referenceValue, String type, Clazz referencedClass, boolean alwaysCast) { // Cast the value. ReferenceValue castValue = referenceValue.getReferenceValue().cast(type, referencedClass, valueFactory, alwaysCast); // Trace it. return new TracedReferenceValue(castValue, preserveTraceValueOnCasts ? referenceValue.getTraceValue() : traceValue); }
public ReferenceValue generalize(IdentifiedReferenceValue other) { return new TracedReferenceValue(referenceValue.generalize(other), traceValue); }
public ReferenceValue generalize(TracedReferenceValue other) { if (this.equals(other)) { return this; } return new TracedReferenceValue(this.referenceValue.generalize(other.referenceValue), this.traceValue .generalize(other.traceValue)); }
/** * Marks the producing offsets of the given traced reference value. */ private void markEscapingReferenceValues(ReferenceValue referenceValue) { TracedReferenceValue tracedReferenceValue = (TracedReferenceValue)referenceValue; InstructionOffsetValue instructionOffsetValue = tracedReferenceValue.getTraceValue().instructionOffsetValue(); int parameterCount = instructionOffsetValue.instructionOffsetCount(); for (int index = 0; index < parameterCount; index++) { if (!instructionOffsetValue.isMethodParameter(index)) { instanceEscaping[instructionOffsetValue.instructionOffset(index)] = true; } } }
public ReferenceValue generalize(ArrayReferenceValue other) { return new TracedReferenceValue(referenceValue.generalize(other), traceValue); }
/** * Marks the producing offsets of the given traced reference value. */ private void markModifiedReferenceValues(ReferenceValue referenceValue) { TracedReferenceValue tracedReferenceValue = (TracedReferenceValue)referenceValue; InstructionOffsetValue instructionOffsetValue = tracedReferenceValue.getTraceValue().instructionOffsetValue(); int parameterCount = instructionOffsetValue.instructionOffsetCount(); for (int index = 0; index < parameterCount; index++) { if (!instructionOffsetValue.isMethodParameter(index)) { instanceModified[instructionOffsetValue.instructionOffset(index)] = true; } } }