< prev index next >

src/share/vm/opto/runtime.cpp

Print this page




  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "classfile/systemDictionary.hpp"
  27 #include "classfile/vmSymbols.hpp"
  28 #include "code/compiledIC.hpp"
  29 #include "code/icBuffer.hpp"
  30 #include "code/nmethod.hpp"
  31 #include "code/pcDesc.hpp"
  32 #include "code/scopeDesc.hpp"
  33 #include "code/vtableStubs.hpp"
  34 #include "compiler/compileBroker.hpp"
  35 #include "compiler/compilerOracle.hpp"
  36 #include "compiler/oopMap.hpp"

  37 #include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
  38 #include "gc_implementation/g1/heapRegion.hpp"
  39 #include "gc_interface/collectedHeap.hpp"
  40 #include "interpreter/bytecode.hpp"
  41 #include "interpreter/interpreter.hpp"
  42 #include "interpreter/linkResolver.hpp"
  43 #include "memory/barrierSet.hpp"
  44 #include "memory/gcLocker.inline.hpp"
  45 #include "memory/oopFactory.hpp"
  46 #include "oops/objArrayKlass.hpp"
  47 #include "oops/oop.inline.hpp"
  48 #include "opto/addnode.hpp"
  49 #include "opto/callnode.hpp"
  50 #include "opto/cfgnode.hpp"
  51 #include "opto/connode.hpp"
  52 #include "opto/graphKit.hpp"
  53 #include "opto/machnode.hpp"
  54 #include "opto/matcher.hpp"
  55 #include "opto/memnode.hpp"
  56 #include "opto/mulnode.hpp"
  57 #include "opto/runtime.hpp"
  58 #include "opto/subnode.hpp"
  59 #include "runtime/fprofiler.hpp"
  60 #include "runtime/handles.inline.hpp"
  61 #include "runtime/interfaceSupport.hpp"
  62 #include "runtime/javaCalls.hpp"
  63 #include "runtime/sharedRuntime.hpp"
  64 #include "runtime/signature.hpp"
  65 #include "runtime/threadCritical.hpp"
  66 #include "runtime/vframe.hpp"
  67 #include "runtime/vframeArray.hpp"
  68 #include "runtime/vframe_hp.hpp"
  69 #include "utilities/copy.hpp"
  70 #include "utilities/preserveException.hpp"
  71 #if defined AD_MD_HPP
  72 # include AD_MD_HPP
  73 #elif defined TARGET_ARCH_MODEL_x86_32
  74 # include "adfiles/ad_x86_32.hpp"
  75 #elif defined TARGET_ARCH_MODEL_x86_64
  76 # include "adfiles/ad_x86_64.hpp"


  77 #elif defined TARGET_ARCH_MODEL_sparc
  78 # include "adfiles/ad_sparc.hpp"
  79 #elif defined TARGET_ARCH_MODEL_zero
  80 # include "adfiles/ad_zero.hpp"
  81 #elif defined TARGET_ARCH_MODEL_ppc_64
  82 # include "adfiles/ad_ppc_64.hpp"
  83 #endif
  84 
  85 
  86 // For debugging purposes:
  87 //  To force FullGCALot inside a runtime function, add the following two lines
  88 //
  89 //  Universe::release_fullgc_alot_dummy();
  90 //  MarkSweep::invoke(0, "Debugging");
  91 //
  92 // At command line specify the parameters: -XX:+FullGCALot -XX:FullGCALotStart=100000000
  93 
  94 
  95 // GHASH block processing
  96 const TypeFunc* OptoRuntime::ghash_processBlocks_Type() {


 558   fields[TypeFunc::Parms+1] = TypeRawPtr::NOTNULL; // thread
 559   const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+2, fields);
 560 
 561   // create result type (range)
 562   fields = TypeTuple::fields(0);
 563   const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields);
 564 
 565   return TypeFunc::make(domain, range);
 566 }
 567 
 568 const TypeFunc *OptoRuntime::g1_wb_post_Type() {
 569 
 570   const Type **fields = TypeTuple::fields(2);
 571   fields[TypeFunc::Parms+0] = TypeRawPtr::NOTNULL;  // Card addr
 572   fields[TypeFunc::Parms+1] = TypeRawPtr::NOTNULL;  // thread
 573   const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+2, fields);
 574 
 575   // create result type (range)
 576   fields = TypeTuple::fields(0);
 577   const TypeTuple *range = TypeTuple::make(TypeFunc::Parms, fields);

























 578 
 579   return TypeFunc::make(domain, range);
 580 }
 581 
 582 const TypeFunc *OptoRuntime::uncommon_trap_Type() {
 583   // create input type (domain)
 584   const Type **fields = TypeTuple::fields(1);
 585   // Symbol* name of class to be loaded
 586   fields[TypeFunc::Parms+0] = TypeInt::INT;
 587   const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields);
 588 
 589   // create result type (range)
 590   fields = TypeTuple::fields(0);
 591   const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields);
 592 
 593   return TypeFunc::make(domain, range);
 594 }
 595 
 596 # ifdef ENABLE_ZAP_DEAD_LOCALS
 597 // Type used for stub generation for zap_dead_locals.




  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "classfile/systemDictionary.hpp"
  27 #include "classfile/vmSymbols.hpp"
  28 #include "code/compiledIC.hpp"
  29 #include "code/icBuffer.hpp"
  30 #include "code/nmethod.hpp"
  31 #include "code/pcDesc.hpp"
  32 #include "code/scopeDesc.hpp"
  33 #include "code/vtableStubs.hpp"
  34 #include "compiler/compileBroker.hpp"
  35 #include "compiler/compilerOracle.hpp"
  36 #include "compiler/oopMap.hpp"
  37 #include "gc_implementation/shenandoah/shenandoahBarrierSet.hpp"
  38 #include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
  39 #include "gc_implementation/g1/heapRegion.hpp"
  40 #include "gc_interface/collectedHeap.hpp"
  41 #include "interpreter/bytecode.hpp"
  42 #include "interpreter/interpreter.hpp"
  43 #include "interpreter/linkResolver.hpp"
  44 #include "memory/barrierSet.hpp"
  45 #include "memory/gcLocker.inline.hpp"
  46 #include "memory/oopFactory.hpp"
  47 #include "oops/objArrayKlass.hpp"
  48 #include "oops/oop.inline.hpp"
  49 #include "opto/addnode.hpp"
  50 #include "opto/callnode.hpp"
  51 #include "opto/cfgnode.hpp"
  52 #include "opto/connode.hpp"
  53 #include "opto/graphKit.hpp"
  54 #include "opto/machnode.hpp"
  55 #include "opto/matcher.hpp"
  56 #include "opto/memnode.hpp"
  57 #include "opto/mulnode.hpp"
  58 #include "opto/runtime.hpp"
  59 #include "opto/subnode.hpp"
  60 #include "runtime/fprofiler.hpp"
  61 #include "runtime/handles.inline.hpp"
  62 #include "runtime/interfaceSupport.hpp"
  63 #include "runtime/javaCalls.hpp"
  64 #include "runtime/sharedRuntime.hpp"
  65 #include "runtime/signature.hpp"
  66 #include "runtime/threadCritical.hpp"
  67 #include "runtime/vframe.hpp"
  68 #include "runtime/vframeArray.hpp"
  69 #include "runtime/vframe_hp.hpp"
  70 #include "utilities/copy.hpp"
  71 #include "utilities/preserveException.hpp"
  72 #if defined AD_MD_HPP
  73 # include AD_MD_HPP
  74 #elif defined TARGET_ARCH_MODEL_x86_32
  75 # include "adfiles/ad_x86_32.hpp"
  76 #elif defined TARGET_ARCH_MODEL_x86_64
  77 # include "adfiles/ad_x86_64.hpp"
  78 #elif defined TARGET_ARCH_MODEL_aarch64
  79 # include "adfiles/ad_aarch64.hpp"
  80 #elif defined TARGET_ARCH_MODEL_sparc
  81 # include "adfiles/ad_sparc.hpp"
  82 #elif defined TARGET_ARCH_MODEL_zero
  83 # include "adfiles/ad_zero.hpp"
  84 #elif defined TARGET_ARCH_MODEL_ppc_64
  85 # include "adfiles/ad_ppc_64.hpp"
  86 #endif
  87 
  88 
  89 // For debugging purposes:
  90 //  To force FullGCALot inside a runtime function, add the following two lines
  91 //
  92 //  Universe::release_fullgc_alot_dummy();
  93 //  MarkSweep::invoke(0, "Debugging");
  94 //
  95 // At command line specify the parameters: -XX:+FullGCALot -XX:FullGCALotStart=100000000
  96 
  97 
  98 // GHASH block processing
  99 const TypeFunc* OptoRuntime::ghash_processBlocks_Type() {


 561   fields[TypeFunc::Parms+1] = TypeRawPtr::NOTNULL; // thread
 562   const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+2, fields);
 563 
 564   // create result type (range)
 565   fields = TypeTuple::fields(0);
 566   const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields);
 567 
 568   return TypeFunc::make(domain, range);
 569 }
 570 
 571 const TypeFunc *OptoRuntime::g1_wb_post_Type() {
 572 
 573   const Type **fields = TypeTuple::fields(2);
 574   fields[TypeFunc::Parms+0] = TypeRawPtr::NOTNULL;  // Card addr
 575   fields[TypeFunc::Parms+1] = TypeRawPtr::NOTNULL;  // thread
 576   const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+2, fields);
 577 
 578   // create result type (range)
 579   fields = TypeTuple::fields(0);
 580   const TypeTuple *range = TypeTuple::make(TypeFunc::Parms, fields);
 581 
 582   return TypeFunc::make(domain, range);
 583 }
 584 
 585 const TypeFunc *OptoRuntime::shenandoah_clone_barrier_Type() {
 586   const Type **fields = TypeTuple::fields(1);
 587   fields[TypeFunc::Parms+0] = TypeOopPtr::NOTNULL; // src oop
 588   const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields);
 589 
 590   // create result type (range)
 591   fields = TypeTuple::fields(0);
 592   const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields);
 593 
 594   return TypeFunc::make(domain, range);
 595 }
 596 
 597 const TypeFunc *OptoRuntime::shenandoah_write_barrier_Type() {
 598   const Type **fields = TypeTuple::fields(1);
 599   fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // original field value
 600   const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields);
 601 
 602   // create result type (range)
 603   fields = TypeTuple::fields(1);
 604   fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL;
 605   const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+1, fields);
 606 
 607   return TypeFunc::make(domain, range);
 608 }
 609 
 610 const TypeFunc *OptoRuntime::uncommon_trap_Type() {
 611   // create input type (domain)
 612   const Type **fields = TypeTuple::fields(1);
 613   // Symbol* name of class to be loaded
 614   fields[TypeFunc::Parms+0] = TypeInt::INT;
 615   const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields);
 616 
 617   // create result type (range)
 618   fields = TypeTuple::fields(0);
 619   const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields);
 620 
 621   return TypeFunc::make(domain, range);
 622 }
 623 
 624 # ifdef ENABLE_ZAP_DEAD_LOCALS
 625 // Type used for stub generation for zap_dead_locals.


< prev index next >