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