Mercurial > hg > graal-jvmci-8
comparison src/cpu/x86/vm/templateInterpreter_x86_64.cpp @ 1135:e66fd840cb6b
6893081: method handle & invokedynamic code needs additional cleanup (post 6815692, 6858164)
Summary: During the work for 6829187 we have fixed a number of basic bugs which are logically grouped with 6815692 and 6858164 but which must be reviewed and pushed separately.
Reviewed-by: kvn, never
author | twisti |
---|---|
date | Mon, 04 Jan 2010 18:38:08 +0100 |
parents | 85f13cdfbc1d |
children | ddb7834449d0 |
comparison
equal
deleted
inserted
replaced
1134:0910903272e5 | 1135:e66fd840cb6b |
---|---|
447 | 447 |
448 // Add stack base to locals and subtract stack size | 448 // Add stack base to locals and subtract stack size |
449 __ addptr(rax, stack_base); | 449 __ addptr(rax, stack_base); |
450 __ subptr(rax, stack_size); | 450 __ subptr(rax, stack_size); |
451 | 451 |
452 // Use the maximum number of pages we might bang. | |
453 const int max_pages = StackShadowPages > (StackRedPages+StackYellowPages) ? StackShadowPages : | |
454 (StackRedPages+StackYellowPages); | |
455 | |
452 // add in the red and yellow zone sizes | 456 // add in the red and yellow zone sizes |
453 __ addptr(rax, (StackRedPages + StackYellowPages) * page_size); | 457 __ addptr(rax, max_pages * page_size); |
454 | 458 |
455 // check against the current stack bottom | 459 // check against the current stack bottom |
456 __ cmpptr(rsp, rax); | 460 __ cmpptr(rsp, rax); |
457 __ jcc(Assembler::above, after_frame_check); | 461 __ jcc(Assembler::above, after_frame_check); |
458 | 462 |
1500 (callee_locals - callee_param_count)*Interpreter::stackElementWords() + | 1504 (callee_locals - callee_param_count)*Interpreter::stackElementWords() + |
1501 moncount * frame::interpreter_frame_monitor_size() + | 1505 moncount * frame::interpreter_frame_monitor_size() + |
1502 tempcount* Interpreter::stackElementWords() + popframe_extra_args; | 1506 tempcount* Interpreter::stackElementWords() + popframe_extra_args; |
1503 if (interpreter_frame != NULL) { | 1507 if (interpreter_frame != NULL) { |
1504 #ifdef ASSERT | 1508 #ifdef ASSERT |
1505 assert(caller->unextended_sp() == interpreter_frame->interpreter_frame_sender_sp(), | 1509 if (!EnableMethodHandles) |
1506 "Frame not properly walkable"); | 1510 // @@@ FIXME: Should we correct interpreter_frame_sender_sp in the calling sequences? |
1511 // Probably, since deoptimization doesn't work yet. | |
1512 assert(caller->unextended_sp() == interpreter_frame->interpreter_frame_sender_sp(), "Frame not properly walkable"); | |
1507 assert(caller->sp() == interpreter_frame->sender_sp(), "Frame not properly walkable(2)"); | 1513 assert(caller->sp() == interpreter_frame->sender_sp(), "Frame not properly walkable(2)"); |
1508 #endif | 1514 #endif |
1509 | 1515 |
1510 interpreter_frame->interpreter_frame_set_method(method); | 1516 interpreter_frame->interpreter_frame_set_method(method); |
1511 // NOTE the difference in using sender_sp and | 1517 // NOTE the difference in using sender_sp and |