changeset 23331:141aba8eb39a

Allow customization of CompilationResultBuilder.dataCache
author Christian Wimmer <christian.wimmer@oracle.com>
date Tue, 19 Jan 2016 17:51:28 -0800
parents 8ae6984accb6
children 8d31c062a05c
files graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java
diffstat 1 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java	Tue Jan 19 15:55:24 2016 +0100
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java	Tue Jan 19 17:51:28 2016 -0800
@@ -31,6 +31,7 @@
 import java.util.Arrays;
 import java.util.IdentityHashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.function.Consumer;
 
 import jdk.vm.ci.code.CodeCacheProvider;
@@ -115,13 +116,19 @@
 
     private List<ExceptionInfo> exceptionInfoList;
 
-    private final IdentityHashMap<Constant, Data> dataCache;
+    private final Map<Constant, Data> dataCache;
 
     private Consumer<LIRInstruction> beforeOp;
     private Consumer<LIRInstruction> afterOp;
 
     public CompilationResultBuilder(CodeCacheProvider codeCache, ForeignCallsProvider foreignCalls, FrameMap frameMap, Assembler asm, DataBuilder dataBuilder, FrameContext frameContext,
                     CompilationResult compilationResult) {
+        // constants are already GVNed in the high level graph, so we can use an IdentityHashMap
+        this(codeCache, foreignCalls, frameMap, asm, dataBuilder, frameContext, compilationResult, new IdentityHashMap<>());
+    }
+
+    public CompilationResultBuilder(CodeCacheProvider codeCache, ForeignCallsProvider foreignCalls, FrameMap frameMap, Assembler asm, DataBuilder dataBuilder, FrameContext frameContext,
+                    CompilationResult compilationResult, Map<Constant, Data> dataCache) {
         this.target = codeCache.getTarget();
         this.codeCache = codeCache;
         this.foreignCalls = foreignCalls;
@@ -131,9 +138,7 @@
         this.compilationResult = compilationResult;
         this.frameContext = frameContext;
         assert frameContext != null;
-
-        // constants are already GVNed in the high level graph, so we can use an IdentityHashMap
-        this.dataCache = new IdentityHashMap<>();
+        this.dataCache = dataCache;
     }
 
     public void setTotalFrameSize(int frameSize) {