Mercurial > hg > graal-compiler
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 }; |