Mercurial > hg > truffle
comparison src/cpu/x86/vm/c1_Runtime1_x86.cpp @ 2607:008adfd6d850
Fixed the stateBefore of invokes and monitorenter instructions to include the arguments of the instruction.
This is necessary to ensure correct continuation in the interpreter when the stateBefore is used as a deoptimization point.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Fri, 06 May 2011 17:47:17 +0200 |
parents | 0654ee04b214 |
children | b1b58f908044 |
comparison
equal
deleted
inserted
replaced
2606:f21f430a6ef2 | 2607:008adfd6d850 |
---|---|
1922 OopMap* oop_map = save_live_registers(sasm, 1, false); | 1922 OopMap* oop_map = save_live_registers(sasm, 1, false); |
1923 c1x_generate_handle_exception(sasm, oop_maps, oop_map); | 1923 c1x_generate_handle_exception(sasm, oop_maps, oop_map); |
1924 break; | 1924 break; |
1925 } | 1925 } |
1926 | 1926 |
1927 case c1x_global_implicit_null_id: { | |
1928 __ push(rax); | |
1929 __ push(rax); | |
1930 // move saved fp to make space for the inserted return address | |
1931 __ get_thread(rax); | |
1932 __ movptr(rax, Address(rax, JavaThread::saved_exception_pc_offset())); | |
1933 __ movptr(Address(rsp, HeapWordSize), rax); | |
1934 __ pop(rax); | |
1935 | |
1936 { StubFrame f(sasm, "c1x_global_implicit_null_id", dont_gc_arguments); | |
1937 oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_null_pointer_exception), false); | |
1938 } | |
1939 break; | |
1940 } | |
1941 | |
1942 case c1x_throw_div0_exception_id: { | 1927 case c1x_throw_div0_exception_id: { |
1943 __ push(rax); | 1928 __ push(rax); |
1944 __ push(rax); | 1929 __ push(rax); |
1945 // move saved fp to make space for the inserted return address | 1930 // move saved fp to make space for the inserted return address |
1946 __ get_thread(rax); | 1931 __ get_thread(rax); |