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