Mercurial > hg > truffle
comparison src/cpu/x86/vm/c1_Runtime1_x86.cpp @ 4137:04b9a2566eec
Merge with hsx23/hotspot.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sat, 17 Dec 2011 21:40:27 +0100 |
parents | b648304ba4ff cec1757a0134 |
children | e0a4668c57a2 |
comparison
equal
deleted
inserted
replaced
3737:9dc19b7d89a3 | 4137:04b9a2566eec |
---|---|
1571 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), rax); | 1571 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), rax); |
1572 | 1572 |
1573 oop_maps = new OopMapSet(); | 1573 oop_maps = new OopMapSet(); |
1574 oop_maps->add_gc_map(call_offset, map); | 1574 oop_maps->add_gc_map(call_offset, map); |
1575 restore_live_registers(sasm, save_fpu_registers); | 1575 restore_live_registers(sasm, save_fpu_registers); |
1576 | 1576 } |
1577 break; | |
1578 | |
1579 case deoptimize_id: | |
1580 { | |
1581 StubFrame f(sasm, "deoptimize", dont_gc_arguments); | |
1582 const int num_rt_args = 1; // thread | |
1583 OopMap* oop_map = save_live_registers(sasm, num_rt_args); | |
1584 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, deoptimize)); | |
1585 oop_maps = new OopMapSet(); | |
1586 oop_maps->add_gc_map(call_offset, oop_map); | |
1587 restore_live_registers(sasm); | |
1588 DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob(); | |
1589 assert(deopt_blob != NULL, "deoptimization blob must have been created"); | |
1590 __ leave(); | |
1591 __ jump(RuntimeAddress(deopt_blob->unpack_with_reexecution())); | |
1577 } | 1592 } |
1578 break; | 1593 break; |
1579 | 1594 |
1580 case access_field_patching_id: | 1595 case access_field_patching_id: |
1581 { StubFrame f(sasm, "access_field_patching", dont_gc_arguments); | 1596 { StubFrame f(sasm, "access_field_patching", dont_gc_arguments); |
1586 | 1601 |
1587 case load_klass_patching_id: | 1602 case load_klass_patching_id: |
1588 { StubFrame f(sasm, "load_klass_patching", dont_gc_arguments); | 1603 { StubFrame f(sasm, "load_klass_patching", dont_gc_arguments); |
1589 // we should set up register map | 1604 // we should set up register map |
1590 oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, move_klass_patching)); | 1605 oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, move_klass_patching)); |
1591 } | |
1592 break; | |
1593 | |
1594 case jvmti_exception_throw_id: | |
1595 { // rax,: exception oop | |
1596 StubFrame f(sasm, "jvmti_exception_throw", dont_gc_arguments); | |
1597 // Preserve all registers across this potentially blocking call | |
1598 const int num_rt_args = 2; // thread, exception oop | |
1599 OopMap* map = save_live_registers(sasm, num_rt_args); | |
1600 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, Runtime1::post_jvmti_exception_throw), rax); | |
1601 oop_maps = new OopMapSet(); | |
1602 oop_maps->add_gc_map(call_offset, map); | |
1603 restore_live_registers(sasm); | |
1604 } | 1606 } |
1605 break; | 1607 break; |
1606 | 1608 |
1607 case dtrace_object_alloc_id: | 1609 case dtrace_object_alloc_id: |
1608 { // rax,: object | 1610 { // rax,: object |