Mercurial > hg > graal-compiler
changeset 13127:f42f1f5d5ce0
Allow custom field offset providers
author | Christian Wimmer <christian.wimmer@oracle.com> |
---|---|
date | Fri, 22 Nov 2013 11:59:39 -0800 |
parents | c07055d2c66e |
children | c9660efac5f6 |
files | graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValueClass.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionClass.java |
diffstat | 3 files changed, 22 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Fri Nov 22 11:58:04 2013 -0800 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Fri Nov 22 11:59:39 2013 -0800 @@ -158,13 +158,17 @@ */ private final boolean isSimplifiable; - private NodeClass(Class<?> clazz) { + public NodeClass(Class<?> clazz) { + this(clazz, new DefaultCalcOffset(), null, 0); + } + + public NodeClass(Class<?> clazz, CalcOffset calcOffset, int[] presetIterableIds, int presetIterableId) { super(clazz); assert NODE_CLASS.isAssignableFrom(clazz); this.isCanonicalizable = Canonicalizable.class.isAssignableFrom(clazz); this.isSimplifiable = Simplifiable.class.isAssignableFrom(clazz); - FieldScanner scanner = new FieldScanner(new DefaultCalcOffset()); + FieldScanner scanner = new FieldScanner(calcOffset); scanner.scan(clazz); directInputCount = scanner.inputOffsets.size(); @@ -200,7 +204,10 @@ } this.nameTemplate = newNameTemplate == null ? newShortName : newNameTemplate; this.shortName = newShortName; - if (IterableNodeType.class.isAssignableFrom(clazz)) { + if (presetIterableIds != null) { + this.iterableIds = presetIterableIds; + this.iterableId = presetIterableId; + } else if (IterableNodeType.class.isAssignableFrom(clazz)) { ITERABLE_NODE_TYPES.increment(); this.iterableId = nextIterableId++; List<NodeClass> existingClasses = new LinkedList<>();
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValueClass.java Fri Nov 22 11:58:04 2013 -0800 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValueClass.java Fri Nov 22 11:59:39 2013 -0800 @@ -61,11 +61,15 @@ private final long[] componentOffsets; private final EnumSet<OperandFlag>[] componentFlags; + public CompositeValueClass(Class<? extends CompositeValue> clazz) { + this(clazz, new DefaultCalcOffset()); + } + @SuppressWarnings("unchecked") - public CompositeValueClass(Class<? extends CompositeValue> clazz) { + public CompositeValueClass(Class<? extends CompositeValue> clazz, CalcOffset calcOffset) { super(clazz); - ValueFieldScanner scanner = new ValueFieldScanner(new DefaultCalcOffset()); + ValueFieldScanner scanner = new ValueFieldScanner(calcOffset); scanner.scan(clazz); OperandModeAnnotation mode = scanner.valueAnnotations.get(CompositeValue.Component.class);
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionClass.java Fri Nov 22 11:58:04 2013 -0800 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionClass.java Fri Nov 22 11:59:39 2013 -0800 @@ -73,12 +73,16 @@ private String opcodeConstant; private long opcodeOffset; + public LIRInstructionClass(Class<? extends LIRInstruction> clazz) { + this(clazz, new DefaultCalcOffset()); + } + @SuppressWarnings("unchecked") - public LIRInstructionClass(Class<? extends LIRInstruction> clazz) { + public LIRInstructionClass(Class<? extends LIRInstruction> clazz, CalcOffset calcOffset) { super(clazz); assert INSTRUCTION_CLASS.isAssignableFrom(clazz); - InstructionFieldScanner scanner = new InstructionFieldScanner(new DefaultCalcOffset()); + InstructionFieldScanner scanner = new InstructionFieldScanner(calcOffset); scanner.scan(clazz); OperandModeAnnotation mode = scanner.valueAnnotations.get(LIRInstruction.Use.class);