Mercurial > hg > graal-compiler
comparison src/cpu/x86/vm/c1_Runtime1_x86.cpp @ 4048:cec1757a0134
7102657: JSR 292: C1 deoptimizes unlinked invokedynamic call sites infinitely
Reviewed-by: never, bdelsart
author | twisti |
---|---|
date | Thu, 27 Oct 2011 04:43:37 -0700 |
parents | c124e2e7463e |
children | 04b9a2566eec 52b5d32fbfaf 069ab3f976d3 |
comparison
equal
deleted
inserted
replaced
4047:d8cb48376797 | 4048:cec1757a0134 |
---|---|
1445 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), rax); | 1445 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), rax); |
1446 | 1446 |
1447 oop_maps = new OopMapSet(); | 1447 oop_maps = new OopMapSet(); |
1448 oop_maps->add_gc_map(call_offset, map); | 1448 oop_maps->add_gc_map(call_offset, map); |
1449 restore_live_registers(sasm, save_fpu_registers); | 1449 restore_live_registers(sasm, save_fpu_registers); |
1450 | 1450 } |
1451 break; | |
1452 | |
1453 case deoptimize_id: | |
1454 { | |
1455 StubFrame f(sasm, "deoptimize", dont_gc_arguments); | |
1456 const int num_rt_args = 1; // thread | |
1457 OopMap* oop_map = save_live_registers(sasm, num_rt_args); | |
1458 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, deoptimize)); | |
1459 oop_maps = new OopMapSet(); | |
1460 oop_maps->add_gc_map(call_offset, oop_map); | |
1461 restore_live_registers(sasm); | |
1462 DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob(); | |
1463 assert(deopt_blob != NULL, "deoptimization blob must have been created"); | |
1464 __ leave(); | |
1465 __ jump(RuntimeAddress(deopt_blob->unpack_with_reexecution())); | |
1451 } | 1466 } |
1452 break; | 1467 break; |
1453 | 1468 |
1454 case access_field_patching_id: | 1469 case access_field_patching_id: |
1455 { StubFrame f(sasm, "access_field_patching", dont_gc_arguments); | 1470 { StubFrame f(sasm, "access_field_patching", dont_gc_arguments); |