Mercurial > hg > truffle
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.) |