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 }