Mercurial > hg > truffle
comparison src/cpu/x86/vm/c1_Runtime1_x86.cpp @ 2608:b1b58f908044
Deoptimize on implicit division by 0.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Fri, 06 May 2011 17:54:02 +0200 |
parents | 008adfd6d850 |
children | 440ceca8e3d7 |
comparison
equal
deleted
inserted
replaced
2607:008adfd6d850 | 2608:b1b58f908044 |
---|---|
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_throw_div0_exception_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, "throw_div0_exception", dont_gc_arguments); | |
1937 oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_div0_exception), false); | |
1938 } | |
1939 break; | |
1940 } | |
1941 | |
1942 case c1x_slow_subtype_check_id: { | 1927 case c1x_slow_subtype_check_id: { |
1943 Label success; | 1928 Label success; |
1944 Label miss; | 1929 Label miss; |
1945 | 1930 |
1946 // TODO this should really be within the XirSnippets | 1931 // TODO this should really be within the XirSnippets |