comparison c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java @ 1444:c0e244017dad

Corrections of oop map generation.
author Thomas Wuerthinger <wuerthinger@ssw.jku.at>
date Tue, 09 Nov 2010 12:30:21 +0100
parents 4d1d3bd140f9
children 9196a2b32950 8cfe3537a0d3
comparison
equal deleted inserted replaced
1443:1b7acf75f900 1444:c0e244017dad
442 XirOperand arg = asm.createRegister("runtime call argument", CiKind.Object, AMD64.rdx); 442 XirOperand arg = asm.createRegister("runtime call argument", CiKind.Object, AMD64.rdx);
443 443
444 UnresolvedClassPatching patching = new UnresolvedClassPatching(asm, arg, config); 444 UnresolvedClassPatching patching = new UnresolvedClassPatching(asm, arg, config);
445 445
446 patching.emitInline(); 446 patching.emitInline();
447 useRegisters(asm, AMD64.rbx, AMD64.rcx, AMD64.rsi); 447 useRegisters(asm, AMD64.rbx, AMD64.rcx, AMD64.rsi, AMD64.rax);
448 useRegisters(asm, AMD64.rax);
449 asm.callRuntime(config.unresolvedNewInstanceStub, result); 448 asm.callRuntime(config.unresolvedNewInstanceStub, result);
450 449
451 // -- out of line ------------------------------------------------------- 450 // -- out of line -------------------------------------------------------
452 patching.emitOutOfLine(); 451 patching.emitOutOfLine();
453 452
474 } else { 473 } else {
475 asm.mov(hub, asm.createConstantInputParameter("hub", CiKind.Object)); 474 asm.mov(hub, asm.createConstantInputParameter("hub", CiKind.Object));
476 } 475 }
477 476
478 asm.mov(length, lengthParam); 477 asm.mov(length, lengthParam);
479 useRegisters(asm, AMD64.rsi, AMD64.rcx, AMD64.rdi); 478 useRegisters(asm, AMD64.rsi, AMD64.rcx, AMD64.rdi, AMD64.rax);
480 useRegisters(asm, AMD64.rax);
481 asm.callRuntime(config.newObjectArrayStub, result); 479 asm.callRuntime(config.newObjectArrayStub, result);
482 if (is(UNRESOLVED, flags)) { 480 if (is(UNRESOLVED, flags)) {
483 patching.emitOutOfLine(); 481 patching.emitOutOfLine();
484 } 482 }
485 return asm.finishTemplate(is(UNRESOLVED, flags) ? "newObjectArray (unresolved)" : "newObjectArray"); 483 return asm.finishTemplate(is(UNRESOLVED, flags) ? "newObjectArray (unresolved)" : "newObjectArray");
498 XirOperand length = asm.createRegister("length", CiKind.Int, AMD64.rbx); 496 XirOperand length = asm.createRegister("length", CiKind.Int, AMD64.rbx);
499 XirOperand hub = asm.createRegister("hub", CiKind.Object, AMD64.rdx); 497 XirOperand hub = asm.createRegister("hub", CiKind.Object, AMD64.rdx);
500 498
501 asm.mov(hub, hubParam); 499 asm.mov(hub, hubParam);
502 asm.mov(length, lengthParam); 500 asm.mov(length, lengthParam);
503 useRegisters(asm, AMD64.rsi, AMD64.rcx, AMD64.rdi); 501 useRegisters(asm, AMD64.rsi, AMD64.rcx, AMD64.rdi, AMD64.rax);
504 useRegisters(asm, AMD64.rax);
505 asm.callRuntime(config.newTypeArrayStub, result); 502 asm.callRuntime(config.newTypeArrayStub, result);
506 503
507 return asm.finishTemplate("newTypeArray"); 504 return asm.finishTemplate("newTypeArray");
508 } 505 }
509 }; 506 };