comparison src/cpu/x86/vm/sharedRuntime_x86_64.cpp @ 15104:ed29f7ff71eb

add DeoptimizationStub
author twisti
date Mon, 14 Apr 2014 17:21:49 -1000
parents 4062efea018b
children 2d6dd2eebd51
comparison
equal deleted inserted replaced
15103:9dc7efd43c44 15104:ed29f7ff71eb
3358 __ movl(r14, Deoptimization::Unpack_reexecute); // callee-saved 3358 __ movl(r14, Deoptimization::Unpack_reexecute); // callee-saved
3359 __ jmp(cont); 3359 __ jmp(cont);
3360 3360
3361 #ifdef GRAAL 3361 #ifdef GRAAL
3362 int implicit_exception_uncommon_trap_offset = __ pc() - start; 3362 int implicit_exception_uncommon_trap_offset = __ pc() - start;
3363
3363 __ pushptr(Address(r15_thread, in_bytes(JavaThread::graal_implicit_exception_pc_offset()))); 3364 __ pushptr(Address(r15_thread, in_bytes(JavaThread::graal_implicit_exception_pc_offset())));
3364
3365 int uncommon_trap_offset = __ pc() - start;
3366 3365
3367 // Save everything in sight. 3366 // Save everything in sight.
3368 RegisterSaver::save_live_registers(masm, 0, &frame_size_in_words); 3367 RegisterSaver::save_live_registers(masm, 0, &frame_size_in_words);
3369 // fetch_unroll_info needs to call last_java_frame() 3368 // fetch_unroll_info needs to call last_java_frame()
3370 __ set_last_Java_frame(noreg, noreg, NULL); 3369 __ set_last_Java_frame(noreg, noreg, NULL);
3641 masm->flush(); 3640 masm->flush();
3642 3641
3643 _deopt_blob = DeoptimizationBlob::create(&buffer, oop_maps, 0, exception_offset, reexecute_offset, frame_size_in_words); 3642 _deopt_blob = DeoptimizationBlob::create(&buffer, oop_maps, 0, exception_offset, reexecute_offset, frame_size_in_words);
3644 _deopt_blob->set_unpack_with_exception_in_tls_offset(exception_in_tls_offset); 3643 _deopt_blob->set_unpack_with_exception_in_tls_offset(exception_in_tls_offset);
3645 #ifdef GRAAL 3644 #ifdef GRAAL
3646 _deopt_blob->set_uncommon_trap_offset(uncommon_trap_offset);
3647 _deopt_blob->set_implicit_exception_uncommon_trap_offset(implicit_exception_uncommon_trap_offset); 3645 _deopt_blob->set_implicit_exception_uncommon_trap_offset(implicit_exception_uncommon_trap_offset);
3648 #endif 3646 #endif
3649 } 3647 }
3650 3648
3651 #ifdef COMPILER2 3649 #ifdef COMPILER2