# HG changeset patch # User Lukas Stadler # Date 1360083565 -3600 # Node ID 926635ea20ce3f6416aefa1d7dc5906b52ee76e8 # Parent 77c86cf336853855c951a79fe30eea027f30a5d0# Parent fad3f591580c769fa95ece74fb1742afcdda51eb Merge diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeCacheProvider.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeCacheProvider.java Tue Feb 05 17:41:15 2013 +0100 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeCacheProvider.java Tue Feb 05 17:59:25 2013 +0100 @@ -103,4 +103,9 @@ * {@link CompilationResult}. A data patch is always created for an object constant. */ boolean needsDataPatch(Constant constant); + + /** + * Gets a description of the target architecture. + */ + TargetDescription getTarget(); } diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.graal.api.test/src/com/oracle/graal/api/test/GraalAPITest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.api.test/src/com/oracle/graal/api/test/GraalAPITest.java Tue Feb 05 17:59:25 2013 +0100 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2012, 2012, 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.api.test; + +import static org.junit.Assert.*; + +import org.junit.*; + +import com.oracle.graal.api.runtime.*; + +public class GraalAPITest { + + @Test + public void testRuntimeAvailable() { + assertNotNull(Graal.getRuntime()); + System.out.println(Graal.getRuntime().getClass()); + } + + @Test + public void testRuntimeNamed() { + assertNotNull(Graal.getRuntime().getName()); + System.out.println(Graal.getRuntime().getName()); + } +} diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.graal.api.test/src/com/oracle/graal/api/test/GraalTest.java --- a/graal/com.oracle.graal.api.test/src/com/oracle/graal/api/test/GraalTest.java Tue Feb 05 17:41:15 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2012, 2012, 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. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package com.oracle.graal.api.test; - -import static org.junit.Assert.*; - -import org.junit.*; - -import com.oracle.graal.api.runtime.*; - -public class GraalTest { - - @Test - public void testRuntimeAvailable() { - assertNotNull(Graal.getRuntime()); - System.out.println(Graal.getRuntime().getClass()); - } - - @Test - public void testRuntimeNamed() { - assertNotNull(Graal.getRuntime().getName()); - System.out.println(Graal.getRuntime().getName()); - } -} diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/AMD64AssemblerTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/AMD64AssemblerTest.java Tue Feb 05 17:59:25 2013 +0100 @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2013, 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.asm.amd64.test; + +import java.lang.reflect.*; + +import org.junit.*; + +import com.oracle.graal.api.code.*; +import com.oracle.graal.api.meta.*; +import com.oracle.graal.api.runtime.*; +import com.oracle.graal.asm.amd64.*; +import com.oracle.graal.test.*; + +public abstract class AMD64AssemblerTest extends GraalTest { + + protected final CodeCacheProvider codeCache; + + public interface CodeGenTest { + + void generateCode(CompilationResult compResult, AMD64MacroAssembler asm, RegisterConfig registerConfig); + } + + public AMD64AssemblerTest() { + this.codeCache = Graal.getRequiredCapability(CodeCacheProvider.class); + } + + protected InstalledCode assembleMethod(Method m, CodeGenTest test) { + ResolvedJavaMethod method = codeCache.lookupJavaMethod(m); + RegisterConfig registerConfig = codeCache.lookupRegisterConfig(method); + + CompilationResult compResult = new CompilationResult(); + AMD64MacroAssembler asm = new AMD64MacroAssembler(codeCache.getTarget(), registerConfig); + + test.generateCode(compResult, asm, registerConfig); + + compResult.setTargetCode(asm.codeBuffer.close(true), asm.codeBuffer.position()); + InstalledCode code = codeCache.addMethod(method, compResult, null); + + return code; + } + + protected void assertReturn(String methodName, CodeGenTest test, Object expected, Object... args) { + Method method = getMethod(methodName); + InstalledCode code = assembleMethod(method, test); + + Object actual = code.executeVarargs(args); + Assert.assertEquals("unexpected return value: " + actual, actual, expected); + } +} diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/SimpleAssemblerTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/SimpleAssemblerTest.java Tue Feb 05 17:59:25 2013 +0100 @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2013, 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.asm.amd64.test; + +import org.junit.*; + +import com.oracle.graal.api.code.*; +import com.oracle.graal.api.meta.*; +import com.oracle.graal.asm.amd64.*; + +public class SimpleAssemblerTest extends AMD64AssemblerTest { + + @Test + public void intTest() { + CodeGenTest test = new CodeGenTest() { + + @Override + public void generateCode(CompilationResult compResult, AMD64MacroAssembler asm, RegisterConfig registerConfig) { + Register ret = registerConfig.getReturnRegister(Kind.Int); + asm.movl(ret, 8472); + asm.ret(0); + } + }; + assertReturn("intStub", test, 8472); + } + + @Test + public void doubleTest() { + CodeGenTest test = new CodeGenTest() { + + @Override + public void generateCode(CompilationResult compResult, AMD64MacroAssembler asm, RegisterConfig registerConfig) { + Register ret = registerConfig.getReturnRegister(Kind.Double); + compResult.recordDataReference(asm.codeBuffer.position(), Constant.forDouble(84.72), 8, false); + asm.movdbl(ret, Address.Placeholder); + asm.ret(0); + } + }; + assertReturn("doubleStub", test, 84.72); + } + + public static int intStub() { + return 0; + } + + public static double doubleStub() { + return 0.0; + } +} diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Tue Feb 05 17:41:15 2013 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Tue Feb 05 17:59:25 2013 +0100 @@ -43,6 +43,7 @@ import com.oracle.graal.phases.PhasePlan.PhasePosition; import com.oracle.graal.phases.schedule.*; import com.oracle.graal.printer.*; +import com.oracle.graal.test.*; /** * Base class for Graal compiler unit tests. @@ -63,7 +64,7 @@ *

* These tests will be run by the {@code mx unittest} command. */ -public abstract class GraalCompilerTest { +public abstract class GraalCompilerTest extends GraalTest { protected final GraalCodeCacheProvider runtime; protected final GraalCompiler graalCompiler; @@ -146,21 +147,6 @@ return parse(getMethod(methodName)); } - protected Method getMethod(String methodName) { - Method found = null; - for (Method m : this.getClass().getMethods()) { - if (m.getName().equals(methodName)) { - Assert.assertNull(found); - found = m; - } - } - if (found != null) { - return found; - } else { - throw new RuntimeException("method not found: " + methodName); - } - } - private static int compilationId = 0; /** diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRuntime.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRuntime.java Tue Feb 05 17:41:15 2013 +0100 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRuntime.java Tue Feb 05 17:59:25 2013 +0100 @@ -196,4 +196,8 @@ return new AMD64HotSpotRegisterConfig(config, globalStubConfig); } + @Override + public TargetDescription getTarget() { + return graalRuntime.getTarget(); + } } diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Tue Feb 05 17:41:15 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Tue Feb 05 17:59:25 2013 +0100 @@ -258,7 +258,7 @@ @SuppressWarnings("unchecked") @Override public T getCapability(Class clazz) { - if (clazz == GraalCodeCacheProvider.class || clazz == MetaAccessProvider.class || clazz == SnippetProvider.class) { + if (clazz == GraalCodeCacheProvider.class || clazz == CodeCacheProvider.class || clazz == MetaAccessProvider.class || clazz == SnippetProvider.class) { return (T) getRuntime(); } if (clazz == GraalCompiler.class) { diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Tue Feb 05 17:41:15 2013 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Tue Feb 05 17:59:25 2013 +0100 @@ -123,7 +123,6 @@ for (Node n : workList) { processNode(n, graph); - Debug.dump(graph, "After processing %s", n); } graph.stopTrackingInputChange(); diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.graal.test/src/com/oracle/graal/test/GraalTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.test/src/com/oracle/graal/test/GraalTest.java Tue Feb 05 17:59:25 2013 +0100 @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2013, 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.test; + +import java.lang.reflect.*; + +import org.junit.*; + +/** + * Base class for Graal tests. + *

+ * This contains common utility methods that are used in multiple test projects. + */ +public class GraalTest { + + protected Method getMethod(String methodName) { + Method found = null; + for (Method m : this.getClass().getMethods()) { + if (m.getName().equals(methodName)) { + Assert.assertNull(found); + found = m; + } + } + if (found != null) { + return found; + } else { + throw new RuntimeException("method not found: " + methodName); + } + } +} diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/FrameTest.java --- a/graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/FrameTest.java Tue Feb 05 17:41:15 2013 +0100 +++ b/graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/FrameTest.java Tue Feb 05 17:59:25 2013 +0100 @@ -35,7 +35,7 @@ * The frame is the preferred data structure for passing values between nodes. It can in particular * be used for storing the values of local variables of the guest language. The * {@link FrameDescriptor} represents the current structure of the frame. The method - * {@link FrameDescriptor#addFrameSlot(String, Class)} can be used to create predefined frame slots. + * {@link FrameDescriptor#addFrameSlot(Object, Class)} can be used to create predefined frame slots. * The setter and getter methods in the {@link Frame} class can be used to access the current value * of a particular frame slot. *

diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/Frame.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/Frame.java Tue Feb 05 17:41:15 2013 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/Frame.java Tue Feb 05 17:59:25 2013 +0100 @@ -31,6 +31,11 @@ public interface Frame { /** + * @return the object describing the layout of this frame + */ + FrameDescriptor getFrameDescriptor(); + + /** * @return the arguments used when calling this method */ Arguments getArguments(); diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameDescriptor.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameDescriptor.java Tue Feb 05 17:41:15 2013 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameDescriptor.java Tue Feb 05 17:59:25 2013 +0100 @@ -33,7 +33,7 @@ protected final TypeConversion typeConversion; private final ArrayList slots; private FrameVersionImpl lastVersion; - private final HashMap nameToSlotMap; + private final HashMap identifierToSlotMap; public FrameDescriptor() { this(DefaultTypeConversion.getInstance()); @@ -42,32 +42,32 @@ public FrameDescriptor(TypeConversion typeConversion) { this.typeConversion = typeConversion; slots = new ArrayList<>(); - nameToSlotMap = new HashMap<>(); + identifierToSlotMap = new HashMap<>(); lastVersion = new FrameVersionImpl(); } - public FrameSlot addFrameSlot(String name) { - return addFrameSlot(name, typeConversion.getTopType()); + public FrameSlot addFrameSlot(Object identifier) { + return addFrameSlot(identifier, typeConversion.getTopType()); } - public FrameSlot addFrameSlot(String name, Class type) { - assert !nameToSlotMap.containsKey(name); - FrameSlotImpl slot = new FrameSlotImpl(this, name, slots.size(), type); + public FrameSlot addFrameSlot(Object identifier, Class type) { + assert !identifierToSlotMap.containsKey(identifier); + FrameSlotImpl slot = new FrameSlotImpl(this, identifier, slots.size(), type); slots.add(slot); - nameToSlotMap.put(name, slot); + identifierToSlotMap.put(identifier, slot); return slot; } - public FrameSlot findFrameSlot(String name) { - return nameToSlotMap.get(name); + public FrameSlot findFrameSlot(Object identifier) { + return identifierToSlotMap.get(identifier); } - public FrameSlot findOrAddFrameSlot(String name) { - FrameSlot result = findFrameSlot(name); + public FrameSlot findOrAddFrameSlot(Object identifier) { + FrameSlot result = findFrameSlot(identifier); if (result != null) { return result; } - return addFrameSlot(name); + return addFrameSlot(identifier); } public FrameVersion getCurrentVersion() { @@ -120,21 +120,21 @@ class FrameSlotImpl implements FrameSlot { private final FrameDescriptor descriptor; - private final String name; + private final Object identifier; private final int index; private Class type; private ArrayList listeners; - protected FrameSlotImpl(FrameDescriptor descriptor, String name, int index, Class type) { + protected FrameSlotImpl(FrameDescriptor descriptor, Object identifier, int index, Class type) { this.descriptor = descriptor; - this.name = name; + this.identifier = identifier; this.index = index; this.type = type; assert type != null; } - public String getName() { - return name; + public Object getIdentifier() { + return identifier; } public int getIndex() { @@ -189,7 +189,7 @@ @Override public String toString() { - return "[" + index + "," + name + "]"; + return "[" + index + "," + identifier + "]"; } @Override diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlot.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlot.java Tue Feb 05 17:41:15 2013 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlot.java Tue Feb 05 17:59:25 2013 +0100 @@ -27,7 +27,7 @@ */ public interface FrameSlot { - String getName(); + Object getIdentifier(); int getIndex(); diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/NativeFrame.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/NativeFrame.java Tue Feb 05 17:41:15 2013 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/NativeFrame.java Tue Feb 05 17:59:25 2013 +0100 @@ -126,4 +126,9 @@ @Override public void updateToLatestVersion() { } + + @Override + public FrameDescriptor getFrameDescriptor() { + throw new UnsupportedOperationException("native frame"); + } } diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultMaterializedFrame.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultMaterializedFrame.java Tue Feb 05 17:41:15 2013 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultMaterializedFrame.java Tue Feb 05 17:59:25 2013 +0100 @@ -117,4 +117,9 @@ public Frame unpack() { return this; } + + @Override + public FrameDescriptor getFrameDescriptor() { + return wrapped.getFrameDescriptor(); + } } diff -r 77c86cf33685 -r 926635ea20ce graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultVirtualFrame.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultVirtualFrame.java Tue Feb 05 17:41:15 2013 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultVirtualFrame.java Tue Feb 05 17:59:25 2013 +0100 @@ -192,4 +192,9 @@ } currentVersion = version; } + + @Override + public FrameDescriptor getFrameDescriptor() { + return this.descriptor; + } } diff -r 77c86cf33685 -r 926635ea20ce mx/projects --- a/mx/projects Tue Feb 05 17:41:15 2013 +0100 +++ b/mx/projects Tue Feb 05 17:59:25 2013 +0100 @@ -220,10 +220,17 @@ project@com.oracle.graal.printer@checkstyle=com.oracle.graal.graph project@com.oracle.graal.printer@javaCompliance=1.7 +# graal.test +project@com.oracle.graal.test@subDir=graal +project@com.oracle.graal.test@sourceDirs=src +project@com.oracle.graal.test@dependencies=JUNIT +project@com.oracle.graal.test@checkstyle=com.oracle.graal.graph +project@com.oracle.graal.test@javaCompliance=1.7 + # graal.compiler.test project@com.oracle.graal.compiler.test@subDir=graal project@com.oracle.graal.compiler.test@sourceDirs=src -project@com.oracle.graal.compiler.test@dependencies=com.oracle.graal.api.runtime,com.oracle.graal.printer,JUNIT +project@com.oracle.graal.compiler.test@dependencies=com.oracle.graal.api.runtime,com.oracle.graal.printer,com.oracle.graal.test project@com.oracle.graal.compiler.test@checkstyle=com.oracle.graal.graph project@com.oracle.graal.compiler.test@javaCompliance=1.7 @@ -248,6 +255,13 @@ project@com.oracle.graal.asm.amd64@checkstyle=com.oracle.graal.graph project@com.oracle.graal.asm.amd64@javaCompliance=1.7 +# graal.asm.amd64.test +project@com.oracle.graal.asm.amd64.test@subDir=graal +project@com.oracle.graal.asm.amd64.test@sourceDirs=src +project@com.oracle.graal.asm.amd64.test@dependencies=com.oracle.graal.api.runtime,com.oracle.graal.test,com.oracle.graal.asm.amd64 +project@com.oracle.graal.asm.amd64.test@checkstyle=com.oracle.graal.graph +project@com.oracle.graal.asm.amd64.test@javaCompliance=1.7 + # truffle.api project@com.oracle.truffle.api@subDir=graal project@com.oracle.truffle.api@sourceDirs=src diff -r 77c86cf33685 -r 926635ea20ce src/share/vm/graal/graalCodeInstaller.cpp --- a/src/share/vm/graal/graalCodeInstaller.cpp Tue Feb 05 17:41:15 2013 +0100 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Tue Feb 05 17:59:25 2013 +0100 @@ -291,8 +291,15 @@ GrowableArray* get_leaf_graph_ids(Handle& comp_result) { arrayOop leafGraphArray = (arrayOop) CompilationResult::leafGraphIds(HotSpotCompilationResult::comp(comp_result)); - GrowableArray* result = new GrowableArray(leafGraphArray->length()); - for (int i = 0; i < leafGraphArray->length(); i++) { + jint length; + if (leafGraphArray == NULL) { + length = 0; + } else { + length = leafGraphArray->length(); + } + + GrowableArray* result = new GrowableArray(length); + for (int i = 0; i < length; i++) { result->append(((jlong*) leafGraphArray->base(T_LONG))[i]); }