< prev index next >

src/share/vm/interpreter/abstractInterpreter.hpp

Print this page




 267     case T_FLOAT:   value->f = *(jfloat*)int_addr_in_slot(slot_addr);   break;
 268     case T_DOUBLE:  value->d = jdouble_cast(long_in_slot(slot_addr));   break;
 269     case T_OBJECT:  value->l = (jobject)*oop_addr_in_slot(slot_addr);   break;
 270     default:        ShouldNotReachHere();
 271     }
 272   }
 273   static void set_jvalue_in_slot(intptr_t* slot_addr, BasicType type, jvalue* value) {
 274     switch (type) {
 275     case T_BOOLEAN: *int_addr_in_slot(slot_addr) = (value->z != 0);     break;
 276     case T_CHAR:    *int_addr_in_slot(slot_addr) = value->c;            break;
 277     case T_BYTE:    *int_addr_in_slot(slot_addr) = value->b;            break;
 278     case T_SHORT:   *int_addr_in_slot(slot_addr) = value->s;            break;
 279     case T_INT:     *int_addr_in_slot(slot_addr) = value->i;            break;
 280     case T_LONG:    set_long_in_slot(slot_addr, value->j);              break;
 281     case T_FLOAT:   *(jfloat*)int_addr_in_slot(slot_addr) = value->f;   break;
 282     case T_DOUBLE:  set_long_in_slot(slot_addr, jlong_cast(value->d));  break;
 283     case T_OBJECT:  *oop_addr_in_slot(slot_addr) = (oop) value->l;      break;
 284     default:        ShouldNotReachHere();
 285     }
 286   }






 287 };
 288 
 289 //------------------------------------------------------------------------------------------------------------------------
 290 // The interpreter generator.
 291 
 292 class Template;
 293 class AbstractInterpreterGenerator: public StackObj {
 294  protected:
 295   InterpreterMacroAssembler* _masm;
 296 
 297   // shared code sequences
 298   // Converter for native abi result to tosca result
 299   address generate_result_handler_for(BasicType type);
 300   address generate_slow_signature_handler();
 301 
 302   void bang_stack_shadow_pages(bool native_call);
 303 
 304   void generate_all();
 305   void initialize_method_handle_entries();
 306 
 307  public:
 308   AbstractInterpreterGenerator(StubQueue* _code);
 309 };
 310 
 311 #endif // SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP


 267     case T_FLOAT:   value->f = *(jfloat*)int_addr_in_slot(slot_addr);   break;
 268     case T_DOUBLE:  value->d = jdouble_cast(long_in_slot(slot_addr));   break;
 269     case T_OBJECT:  value->l = (jobject)*oop_addr_in_slot(slot_addr);   break;
 270     default:        ShouldNotReachHere();
 271     }
 272   }
 273   static void set_jvalue_in_slot(intptr_t* slot_addr, BasicType type, jvalue* value) {
 274     switch (type) {
 275     case T_BOOLEAN: *int_addr_in_slot(slot_addr) = (value->z != 0);     break;
 276     case T_CHAR:    *int_addr_in_slot(slot_addr) = value->c;            break;
 277     case T_BYTE:    *int_addr_in_slot(slot_addr) = value->b;            break;
 278     case T_SHORT:   *int_addr_in_slot(slot_addr) = value->s;            break;
 279     case T_INT:     *int_addr_in_slot(slot_addr) = value->i;            break;
 280     case T_LONG:    set_long_in_slot(slot_addr, value->j);              break;
 281     case T_FLOAT:   *(jfloat*)int_addr_in_slot(slot_addr) = value->f;   break;
 282     case T_DOUBLE:  set_long_in_slot(slot_addr, jlong_cast(value->d));  break;
 283     case T_OBJECT:  *oop_addr_in_slot(slot_addr) = (oop) value->l;      break;
 284     default:        ShouldNotReachHere();
 285     }
 286   }
 287 
 288   static void initialize_method_handle_entries();
 289 
 290   // PPC-only: Support abs and sqrt like in compiler.
 291   // For others we can use a normal (native) entry.
 292   static bool math_entry_available(MethodKind kind);
 293 };
 294 
 295 //------------------------------------------------------------------------------------------------------------------------
 296 // The interpreter generator.
 297 
 298 class Template;
 299 class AbstractInterpreterGenerator: public StackObj {
 300  protected:
 301   InterpreterMacroAssembler* _masm;










 302 
 303  public:
 304   AbstractInterpreterGenerator(StubQueue* _code);
 305 };
 306 
 307 #endif // SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP
< prev index next >