< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/gen/DebugInfoBuilder.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 130,141 **** } else if (!value.isConstant() || value.asJavaConstant().getJavaKind() != JavaKind.Illegal) { values[pos] = toJavaValue(value); slotKinds[pos] = toSlotKind(value); pos++; } else { ! assert currentField.values().get(i - 1).getStackKind() == JavaKind.Double || currentField.values().get(i - 1).getStackKind() == JavaKind.Long : vobjNode + " " + i + " " + ! currentField.values().get(i - 1); } } if (pos != entryCount) { values = Arrays.copyOf(values, pos); slotKinds = Arrays.copyOf(slotKinds, pos); --- 130,150 ---- } else if (!value.isConstant() || value.asJavaConstant().getJavaKind() != JavaKind.Illegal) { values[pos] = toJavaValue(value); slotKinds[pos] = toSlotKind(value); pos++; } else { ! assert value.getStackKind() == JavaKind.Illegal; ! ValueNode previousValue = currentField.values().get(i - 1); ! assert (previousValue != null && previousValue.getStackKind().needsTwoSlots()) : vobjNode + " " + i + ! " " + previousValue + " " + currentField.values().snapshot(); ! if (previousValue == null || !previousValue.getStackKind().needsTwoSlots()) { ! // Don't allow the IllegalConstant to leak into the debug info ! JavaKind entryKind = vobjNode.entryKind(i); ! values[pos] = JavaConstant.defaultForKind(entryKind.getStackKind()); ! slotKinds[pos] = entryKind.getStackKind(); ! pos++; ! } } } if (pos != entryCount) { values = Arrays.copyOf(values, pos); slotKinds = Arrays.copyOf(slotKinds, pos);
*** 162,186 **** if (values != null) { assert values.length == slotKinds.length; if (!type.isArray()) { ResolvedJavaField[] fields = type.getInstanceFields(true); int fieldIndex = 0; ! for (int i = 0; i < values.length; i++) { ! ResolvedJavaField field = fields[fieldIndex++]; ! JavaKind valKind = slotKinds[i].getStackKind(); JavaKind fieldKind = storageKind(field.getType()); - if (fieldKind == JavaKind.Object) { - assert valKind.isObject() : field + ": " + valKind + " != " + fieldKind; - } else { if ((valKind == JavaKind.Double || valKind == JavaKind.Long) && fieldKind == JavaKind.Int) { ! assert storageKind(fields[fieldIndex].getType()) == JavaKind.Int; fieldIndex++; } else { assert valKind == fieldKind.getStackKind() : field + ": " + valKind + " != " + fieldKind; } } - } assert fields.length == fieldIndex : type + ": fields=" + Arrays.toString(fields) + ", field values=" + Arrays.toString(values); } else { JavaKind componentKind = storageKind(type.getComponentType()).getStackKind(); if (componentKind == JavaKind.Object) { for (int i = 0; i < values.length; i++) { --- 171,195 ---- if (values != null) { assert values.length == slotKinds.length; if (!type.isArray()) { ResolvedJavaField[] fields = type.getInstanceFields(true); int fieldIndex = 0; ! for (int valueIndex = 0; valueIndex < values.length; valueIndex++, fieldIndex++) { ! ResolvedJavaField field = fields[fieldIndex]; ! JavaKind valKind = slotKinds[valueIndex].getStackKind(); JavaKind fieldKind = storageKind(field.getType()); if ((valKind == JavaKind.Double || valKind == JavaKind.Long) && fieldKind == JavaKind.Int) { ! assert fieldIndex + 1 < fields.length : String.format("Not enough fields for fieldIndex = %d valueIndex = %d %s %s", fieldIndex, valueIndex, Arrays.toString(fields), ! Arrays.toString(values)); ! assert storageKind(fields[fieldIndex + 1].getType()) == JavaKind.Int : String.format("fieldIndex = %d valueIndex = %d %s %s %s", fieldIndex, valueIndex, ! storageKind(fields[fieldIndex + 1].getType()), Arrays.toString(fields), ! Arrays.toString(values)); fieldIndex++; } else { assert valKind == fieldKind.getStackKind() : field + ": " + valKind + " != " + fieldKind; } } assert fields.length == fieldIndex : type + ": fields=" + Arrays.toString(fields) + ", field values=" + Arrays.toString(values); } else { JavaKind componentKind = storageKind(type.getComponentType()).getStackKind(); if (componentKind == JavaKind.Object) { for (int i = 0; i < values.length; i++) {
< prev index next >