Mercurial > hg > graal-compiler
comparison src/share/vm/opto/doCall.cpp @ 6268:6c5b7a6becc8
7187454: stack overflow in C2 compiler thread on Solaris x86
Summary: Added new FormatBufferResource class to use thread's resource area for error message buffer.
Reviewed-by: twisti
author | kvn |
---|---|
date | Mon, 30 Jul 2012 09:49:25 -0700 |
parents | 977007096840 |
children | b72784e722ff |
comparison
equal
deleted
inserted
replaced
6267:977007096840 | 6268:6c5b7a6becc8 |
---|---|
521 retnode = _gvn.transform( new (C, 3) RShiftINode(retnode, intcon(24)) ); | 521 retnode = _gvn.transform( new (C, 3) RShiftINode(retnode, intcon(24)) ); |
522 } else if (ct == T_SHORT) { | 522 } else if (ct == T_SHORT) { |
523 retnode = _gvn.transform( new (C, 3) LShiftINode(retnode, intcon(16)) ); | 523 retnode = _gvn.transform( new (C, 3) LShiftINode(retnode, intcon(16)) ); |
524 retnode = _gvn.transform( new (C, 3) RShiftINode(retnode, intcon(16)) ); | 524 retnode = _gvn.transform( new (C, 3) RShiftINode(retnode, intcon(16)) ); |
525 } else { | 525 } else { |
526 assert(ct == T_INT, err_msg("rt=%d, ct=%d", rt, ct)); | 526 assert(ct == T_INT, err_msg_res("rt=%d, ct=%d", rt, ct)); |
527 } | 527 } |
528 } else if (rt == T_OBJECT) { | 528 } else if (rt == T_OBJECT) { |
529 assert(ct == T_OBJECT, err_msg("rt=T_OBJECT, ct=%d", ct)); | 529 assert(ct == T_OBJECT, err_msg_res("rt=T_OBJECT, ct=%d", ct)); |
530 if (ctype->is_loaded()) { | 530 if (ctype->is_loaded()) { |
531 Node* if_fail = top(); | 531 Node* if_fail = top(); |
532 retnode = gen_checkcast(retnode, makecon(TypeKlassPtr::make(ctype->as_klass())), &if_fail); | 532 retnode = gen_checkcast(retnode, makecon(TypeKlassPtr::make(ctype->as_klass())), &if_fail); |
533 if (if_fail != top()) { | 533 if (if_fail != top()) { |
534 PreserveJVMState pjvms(this); | 534 PreserveJVMState pjvms(this); |
537 } | 537 } |
538 pop(); | 538 pop(); |
539 push(retnode); | 539 push(retnode); |
540 } | 540 } |
541 } else { | 541 } else { |
542 assert(ct == rt, err_msg("unexpected mismatch rt=%d, ct=%d", rt, ct)); | 542 assert(ct == rt, err_msg_res("unexpected mismatch rt=%d, ct=%d", rt, ct)); |
543 // push a zero; it's better than getting an oop/int mismatch | 543 // push a zero; it's better than getting an oop/int mismatch |
544 retnode = pop_node(rt); | 544 retnode = pop_node(rt); |
545 retnode = zerocon(ct); | 545 retnode = zerocon(ct); |
546 push_node(ct, retnode); | 546 push_node(ct, retnode); |
547 } | 547 } |