comparison c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java @ 1428:695451afc619

refactoring classes into separate files
author Lukas Stadler <lukas.stadler@oracle.com>
date Thu, 19 Aug 2010 14:34:52 -0700
parents 149b1d2316de
children abc670a709dc
comparison
equal deleted inserted replaced
1427:149b1d2316de 1428:695451afc619
33 * 33 *
34 * @author Thomas Wuerthinger, Lukas Stadler 34 * @author Thomas Wuerthinger, Lukas Stadler
35 */ 35 */
36 public class HotSpotXirGenerator implements RiXirGenerator { 36 public class HotSpotXirGenerator implements RiXirGenerator {
37 37
38 // this needs to correspond to c1x_Compiler.hpp 38 // this needs to correspond to c1x_CodeInstaller.hpp
39 private static final Integer MARK_VERIFIED_ENTRY = 1; 39 private static final Integer MARK_VERIFIED_ENTRY = 0x0001;
40 private static final Integer MARK_UNVERIFIED_ENTRY = 2; 40 private static final Integer MARK_UNVERIFIED_ENTRY = 0x0002;
41 private static final Integer MARK_OSR_ENTRY = 3; 41 private static final Integer MARK_OSR_ENTRY = 0x0003;
42 private static final Integer MARK_STATIC_CALL_STUB = 1000; 42 private static final Integer MARK_STATIC_CALL_STUB = 0x1000;
43 43 private static final Integer MARK_INVOKE_INVALID = 0x2000;
44 private static final Integer MARK_INVOKE_INVALID = 2000; 44 private static final Integer MARK_INVOKEINTERFACE = 0x2001;
45 private static final Integer MARK_INVOKEINTERFACE = 2001; 45 private static final Integer MARK_INVOKESTATIC = 0x2002;
46 private static final Integer MARK_INVOKESTATIC = 2002; 46 private static final Integer MARK_INVOKESPECIAL = 0x2003;
47 private static final Integer MARK_INVOKESPECIAL = 2003; 47 private static final Integer MARK_INVOKEVIRTUAL = 0x2004;
48 private static final Integer MARK_INVOKEVIRTUAL = 2004; 48 private static final Integer MARK_IMPLICIT_NULL_EXCEPTION_TARGET = 0x3000;
49 49
50 private final HotSpotVMConfig config; 50 private final HotSpotVMConfig config;
51 private final CiTarget target; 51 private final CiTarget target;
52 private final RiRegisterConfig registerConfig; 52 private final RiRegisterConfig registerConfig;
53 53
445 asm.mov(method, asm.w(0l)); 445 asm.mov(method, asm.w(0l));
446 XirLabel dummy = asm.createOutOfLineLabel("dummy"); 446 XirLabel dummy = asm.createOutOfLineLabel("dummy");
447 asm.jmp(dummy); 447 asm.jmp(dummy);
448 asm.bindOutOfLine(dummy); 448 asm.bindOutOfLine(dummy);
449 449
450 asm.mark(MARK_IMPLICIT_NULL_EXCEPTION_TARGET, XirMark.CALLSITE);
451 asm.callRuntime(config.throwImplicitNullStub, null);
452
450 return asm.finishTemplate(addr, "invokespecial"); 453 return asm.finishTemplate(addr, "invokespecial");
451 } 454 }
452 455
453 private XirTemplate buildNewInstance() { 456 private XirTemplate buildNewInstance() {
454 XirOperand result = asm.restart(CiKind.Word); 457 XirOperand result = asm.restart(CiKind.Word);