# HG changeset patch # User Michael Van De Vanter # Date 1390455240 28800 # Node ID 64fa703198908c030edb114c79c38cda2314062c # Parent 2c1c805153e62d9235f24b624fad5c18857222f1# Parent 9161ed8ce7964ca3df5e91894522b207a2bc4a3e Merge with 9161ed8ce7964ca3df5e91894522b207a2bc4a3e diff -r 2c1c805153e6 -r 64fa70319890 graal/com.oracle.graal.amd64/src/com/oracle/graal/amd64/AMD64.java --- a/graal/com.oracle.graal.amd64/src/com/oracle/graal/amd64/AMD64.java Wed Jan 22 21:02:06 2014 -0800 +++ b/graal/com.oracle.graal.amd64/src/com/oracle/graal/amd64/AMD64.java Wed Jan 22 21:34:00 2014 -0800 @@ -146,6 +146,7 @@ case Short: case Int: case Long: + case NarrowOop: case Object: return true; } diff -r 2c1c805153e6 -r 64fa70319890 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Architecture.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Architecture.java Wed Jan 22 21:02:06 2014 -0800 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Architecture.java Wed Jan 22 21:34:00 2014 -0800 @@ -223,6 +223,8 @@ return 8; case Object: return wordSize; + case NarrowOop: + return wordSize / 2; default: return 0; } diff -r 2c1c805153e6 -r 64fa70319890 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeUtil.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeUtil.java Wed Jan 22 21:02:06 2014 -0800 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeUtil.java Wed Jan 22 21:34:00 2014 -0800 @@ -227,10 +227,17 @@ return sb; } + public interface RefMapFormatter { + + String formatStackSlot(int frameRefMapIndex); + + String formatRegister(int regRefMapIndex); + } + /** * Formats a location present in a register or frame reference map. */ - public static class RefMapFormatter { + public static class DefaultRefMapFormatter implements RefMapFormatter { /** * The size of a stack slot. @@ -252,7 +259,7 @@ */ public final int refMapToFPOffset; - public RefMapFormatter(Architecture arch, int slotSize, Register fp, int refMapToFPOffset) { + public DefaultRefMapFormatter(Architecture arch, int slotSize, Register fp, int refMapToFPOffset) { this.arch = arch; this.slotSize = slotSize; this.fp = fp; @@ -283,25 +290,16 @@ */ public static StringBuilder append(StringBuilder sb, DebugInfo info, RefMapFormatter formatter) { String nl = NEW_LINE; - if (info.hasRegisterRefMap()) { + ReferenceMap refMap = info.getReferenceMap(); + if (refMap != null && refMap.hasRegisterRefMap()) { sb.append(" reg-ref-map:"); - BitSet bm = info.getRegisterRefMap(); - if (formatter != null) { - for (int reg = bm.nextSetBit(0); reg >= 0; reg = bm.nextSetBit(reg + 1)) { - sb.append(" " + formatter.formatRegister(reg)); - } - } - sb.append(' ').append(bm).append(nl); + refMap.appendRegisterMap(sb, formatter); + sb.append(nl); } - if (info.hasStackRefMap()) { + if (refMap != null && refMap.hasFrameRefMap()) { sb.append("frame-ref-map:"); - BitSet bm = info.getFrameRefMap(); - if (formatter != null) { - for (int i = bm.nextSetBit(0); i >= 0; i = bm.nextSetBit(i + 1)) { - sb.append(" " + formatter.formatStackSlot(i)); - } - } - sb.append(' ').append(bm).append(nl); + refMap.appendFrameMap(sb, formatter); + sb.append(nl); } RegisterSaveLayout calleeSaveInfo = info.getCalleeSaveInfo(); if (calleeSaveInfo != null) { diff -r 2c1c805153e6 -r 64fa70319890 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java Wed Jan 22 21:02:06 2014 -0800 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java Wed Jan 22 21:34:00 2014 -0800 @@ -696,8 +696,19 @@ private static void appendDebugInfo(StringBuilder sb, DebugInfo info) { if (info != null) { - appendRefMap(sb, "stackMap", info.getFrameRefMap()); - appendRefMap(sb, "registerMap", info.getRegisterRefMap()); + ReferenceMap refMap = info.getReferenceMap(); + if (refMap != null) { + if (refMap.hasFrameRefMap()) { + sb.append(" stackMap["); + refMap.appendFrameMap(sb, null); + sb.append(']'); + } + if (refMap.hasRegisterRefMap()) { + sb.append(" registerMap["); + refMap.appendRegisterMap(sb, null); + sb.append(']'); + } + } RegisterSaveLayout calleeSaveInfo = info.getCalleeSaveInfo(); if (calleeSaveInfo != null) { sb.append(" callee-save-info["); @@ -721,12 +732,6 @@ } } - private static void appendRefMap(StringBuilder sb, String name, BitSet map) { - if (map != null) { - sb.append(' ').append(name).append('[').append(map.toString()).append(']'); - } - } - /** * @return the list of infopoints, sorted by {@link Site#pcOffset} */ diff -r 2c1c805153e6 -r 64fa70319890 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DebugInfo.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DebugInfo.java Wed Jan 22 21:02:06 2014 -0800 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DebugInfo.java Wed Jan 22 21:34:00 2014 -0800 @@ -23,15 +23,13 @@ package com.oracle.graal.api.code; import java.io.*; -import java.util.*; /** * Represents the debugging information for a particular point of execution. This information * includes: *