comparison src/share/vm/opto/callnode.hpp @ 1080:7c57aead6d3e

6892658: C2 should optimize some stringbuilder patterns Reviewed-by: kvn, twisti
author never
date Thu, 12 Nov 2009 09:24:21 -0800
parents 15bbd3f505c0
children 97125851f396
comparison
equal deleted inserted replaced
1078:8e7adf982378 1080:7c57aead6d3e
468 #ifndef PRODUCT 468 #ifndef PRODUCT
469 virtual void dump_spec(outputStream *st) const; 469 virtual void dump_spec(outputStream *st) const;
470 #endif 470 #endif
471 }; 471 };
472 472
473
474 // Simple container for the outgoing projections of a call. Useful
475 // for serious surgery on calls.
476 class CallProjections : public StackObj {
477 public:
478 Node* fallthrough_proj;
479 Node* fallthrough_catchproj;
480 Node* fallthrough_memproj;
481 Node* fallthrough_ioproj;
482 Node* catchall_catchproj;
483 Node* catchall_memproj;
484 Node* catchall_ioproj;
485 Node* resproj;
486 Node* exobj;
487 };
488
489
473 //------------------------------CallNode--------------------------------------- 490 //------------------------------CallNode---------------------------------------
474 // Call nodes now subsume the function of debug nodes at callsites, so they 491 // Call nodes now subsume the function of debug nodes at callsites, so they
475 // contain the functionality of a full scope chain of debug nodes. 492 // contain the functionality of a full scope chain of debug nodes.
476 class CallNode : public SafePointNode { 493 class CallNode : public SafePointNode {
477 public: 494 public:
519 // Returns the unique CheckCastPP of a call 536 // Returns the unique CheckCastPP of a call
520 // or result projection is there are several CheckCastPP 537 // or result projection is there are several CheckCastPP
521 // or returns NULL if there is no one. 538 // or returns NULL if there is no one.
522 Node *result_cast(); 539 Node *result_cast();
523 540
541 // Collect all the interesting edges from a call for use in
542 // replacing the call by something else. Used by macro expansion
543 // and the late inlining support.
544 void extract_projections(CallProjections* projs, bool separate_io_proj);
545
524 virtual uint match_edge(uint idx) const; 546 virtual uint match_edge(uint idx) const;
525 547
526 #ifndef PRODUCT 548 #ifndef PRODUCT
527 virtual void dump_req() const; 549 virtual void dump_req() const;
528 virtual void dump_spec(outputStream *st) const; 550 virtual void dump_spec(outputStream *st) const;
529 #endif 551 #endif
530 }; 552 };
553
531 554
532 //------------------------------CallJavaNode----------------------------------- 555 //------------------------------CallJavaNode-----------------------------------
533 // Make a static or dynamic subroutine call node using Java calling 556 // Make a static or dynamic subroutine call node using Java calling
534 // convention. (The "Java" calling convention is the compiler's calling 557 // convention. (The "Java" calling convention is the compiler's calling
535 // convention, as opposed to the interpreter's or that of native C.) 558 // convention, as opposed to the interpreter's or that of native C.)