src/share/vm/ci/ciTypeFlow.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File valhalla-experimental Sdiff src/share/vm/ci

src/share/vm/ci/ciTypeFlow.hpp

Print this page




 359     void      push_null() {
 360       push(null_type());
 361     }
 362     void      do_null_assert(ciKlass* unloaded_klass);
 363 
 364     // Helper convenience routines.
 365     void do_aaload(ciBytecodeStream* str);
 366     void do_checkcast(ciBytecodeStream* str);
 367     void do_getfield(ciBytecodeStream* str);
 368     void do_getstatic(ciBytecodeStream* str);
 369     void do_invoke(ciBytecodeStream* str, bool has_receiver);
 370     void do_jsr(ciBytecodeStream* str);
 371     void do_ldc(ciBytecodeStream* str);
 372     void do_multianewarray(ciBytecodeStream* str);
 373     void do_new(ciBytecodeStream* str);
 374     void do_vnew(ciBytecodeStream* str);
 375     void do_newarray(ciBytecodeStream* str);
 376     void do_putfield(ciBytecodeStream* str);
 377     void do_putstatic(ciBytecodeStream* str);
 378     void do_ret(ciBytecodeStream* str);


 379 
 380     void overwrite_local_double_long(int index) {
 381       // Invalidate the previous local if it contains first half of
 382       // a double or long value since it's seconf half is being overwritten.
 383       int prev_index = index - 1;
 384       if (prev_index >= 0 &&
 385           (is_double(type_at(local(prev_index))) ||
 386            is_long(type_at(local(prev_index))))) {
 387         set_type_at(local(prev_index), bottom_type());
 388       }
 389     }
 390 
 391     void load_local_object(int index) {
 392       ciType* type = type_at(local(index));
 393       assert(is_reference(type), "must be reference type");
 394       push(type);
 395     }
 396     void store_local_object(int index) {
 397       ciType* type = pop_value();
 398       assert(is_reference(type) || type->is_return_address(),




 359     void      push_null() {
 360       push(null_type());
 361     }
 362     void      do_null_assert(ciKlass* unloaded_klass);
 363 
 364     // Helper convenience routines.
 365     void do_aaload(ciBytecodeStream* str);
 366     void do_checkcast(ciBytecodeStream* str);
 367     void do_getfield(ciBytecodeStream* str);
 368     void do_getstatic(ciBytecodeStream* str);
 369     void do_invoke(ciBytecodeStream* str, bool has_receiver);
 370     void do_jsr(ciBytecodeStream* str);
 371     void do_ldc(ciBytecodeStream* str);
 372     void do_multianewarray(ciBytecodeStream* str);
 373     void do_new(ciBytecodeStream* str);
 374     void do_vnew(ciBytecodeStream* str);
 375     void do_newarray(ciBytecodeStream* str);
 376     void do_putfield(ciBytecodeStream* str);
 377     void do_putstatic(ciBytecodeStream* str);
 378     void do_ret(ciBytecodeStream* str);
 379     void do_vunbox(ciBytecodeStream* str);
 380     void do_vbox(ciBytecodeStream* str);
 381 
 382     void overwrite_local_double_long(int index) {
 383       // Invalidate the previous local if it contains first half of
 384       // a double or long value since it's seconf half is being overwritten.
 385       int prev_index = index - 1;
 386       if (prev_index >= 0 &&
 387           (is_double(type_at(local(prev_index))) ||
 388            is_long(type_at(local(prev_index))))) {
 389         set_type_at(local(prev_index), bottom_type());
 390       }
 391     }
 392 
 393     void load_local_object(int index) {
 394       ciType* type = type_at(local(index));
 395       assert(is_reference(type), "must be reference type");
 396       push(type);
 397     }
 398     void store_local_object(int index) {
 399       ciType* type = pop_value();
 400       assert(is_reference(type) || type->is_return_address(),


src/share/vm/ci/ciTypeFlow.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File