src/cpu/x86/vm/stubGenerator_x86_64.cpp

changeset 3522
c742b0b47fe5
parent 3400
22cee0ee8927
child 3568
b522995d91f0
equal deleted inserted replaced
3521:b9bc6cae88f2 3522:c742b0b47fe5
2976 __ subptr(rsp, (framesize-4) << LogBytesPerInt); // prolog 2976 __ subptr(rsp, (framesize-4) << LogBytesPerInt); // prolog
2977 2977
2978 int frame_complete = __ pc() - start; 2978 int frame_complete = __ pc() - start;
2979 2979
2980 // Set up last_Java_sp and last_Java_fp 2980 // Set up last_Java_sp and last_Java_fp
2981 __ set_last_Java_frame(rsp, rbp, NULL); 2981 address the_pc = __ pc();
2982 __ set_last_Java_frame(rsp, rbp, the_pc);
2983 __ andptr(rsp, -(StackAlignmentInBytes)); // Align stack
2982 2984
2983 // Call runtime 2985 // Call runtime
2984 if (arg1 != noreg) { 2986 if (arg1 != noreg) {
2985 assert(arg2 != c_rarg1, "clobbered"); 2987 assert(arg2 != c_rarg1, "clobbered");
2986 __ movptr(c_rarg1, arg1); 2988 __ movptr(c_rarg1, arg1);
2995 // Generate oop map 2997 // Generate oop map
2996 OopMap* map = new OopMap(framesize, 0); 2998 OopMap* map = new OopMap(framesize, 0);
2997 2999
2998 oop_maps->add_gc_map(__ pc() - start, map); 3000 oop_maps->add_gc_map(__ pc() - start, map);
2999 3001
3000 __ reset_last_Java_frame(true, false); 3002 __ reset_last_Java_frame(true, true);
3001 3003
3002 __ leave(); // required for proper stackwalking of RuntimeStub frame 3004 __ leave(); // required for proper stackwalking of RuntimeStub frame
3003 3005
3004 // check for pending exceptions 3006 // check for pending exceptions
3005 #ifdef ASSERT 3007 #ifdef ASSERT

mercurial