src/share/vm/opto/runtime.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7102657 Sdiff src/share/vm/opto

src/share/vm/opto/runtime.cpp

Print this page




1113   const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1,fields);
1114 
1115   // create result type (range)
1116   fields = TypeTuple::fields(1);
1117   fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // Exception oop
1118   const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+1, fields);
1119 
1120   return TypeFunc::make(domain, range);
1121 }
1122 
1123 
1124 void OptoRuntime::deoptimize_caller_frame(JavaThread *thread, bool doit) {
1125   // Deoptimize frame
1126   if (doit) {
1127     // Called from within the owner thread, so no need for safepoint
1128     RegisterMap reg_map(thread);
1129     frame stub_frame = thread->last_frame();
1130     assert(stub_frame.is_runtime_frame() || exception_blob()->contains(stub_frame.pc()), "sanity check");
1131     frame caller_frame = stub_frame.sender(&reg_map);
1132 
1133     // bypass VM_DeoptimizeFrame and deoptimize the frame directly
1134     Deoptimization::deoptimize_frame(thread, caller_frame.id());
1135   }
1136 }
1137 
1138 
1139 const TypeFunc *OptoRuntime::register_finalizer_Type() {
1140   // create input type (domain)
1141   const Type **fields = TypeTuple::fields(1);
1142   fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL;  // oop;          Receiver
1143   // // The JavaThread* is passed to each routine as the last argument
1144   // fields[TypeFunc::Parms+1] = TypeRawPtr::NOTNULL;  // JavaThread *; Executing thread
1145   const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1,fields);
1146 
1147   // create result type (range)
1148   fields = TypeTuple::fields(0);
1149 
1150   const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0,fields);
1151 
1152   return TypeFunc::make(domain,range);
1153 }




1113   const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1,fields);
1114 
1115   // create result type (range)
1116   fields = TypeTuple::fields(1);
1117   fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // Exception oop
1118   const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+1, fields);
1119 
1120   return TypeFunc::make(domain, range);
1121 }
1122 
1123 
1124 void OptoRuntime::deoptimize_caller_frame(JavaThread *thread, bool doit) {
1125   // Deoptimize frame
1126   if (doit) {
1127     // Called from within the owner thread, so no need for safepoint
1128     RegisterMap reg_map(thread);
1129     frame stub_frame = thread->last_frame();
1130     assert(stub_frame.is_runtime_frame() || exception_blob()->contains(stub_frame.pc()), "sanity check");
1131     frame caller_frame = stub_frame.sender(&reg_map);
1132 
1133     // Deoptimize the caller frame.
1134     Deoptimization::deoptimize_frame(thread, caller_frame.id());
1135   }
1136 }
1137 
1138 
1139 const TypeFunc *OptoRuntime::register_finalizer_Type() {
1140   // create input type (domain)
1141   const Type **fields = TypeTuple::fields(1);
1142   fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL;  // oop;          Receiver
1143   // // The JavaThread* is passed to each routine as the last argument
1144   // fields[TypeFunc::Parms+1] = TypeRawPtr::NOTNULL;  // JavaThread *; Executing thread
1145   const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1,fields);
1146 
1147   // create result type (range)
1148   fields = TypeTuple::fields(0);
1149 
1150   const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0,fields);
1151 
1152   return TypeFunc::make(domain,range);
1153 }


src/share/vm/opto/runtime.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File