447 // switch that adds the operands for each instruction 448 449 void LIR_OpVisitState::visit(LIR_Op* op) { 450 // copy information from the LIR_Op 451 reset(); 452 set_op(op); 453 454 switch (op->code()) { 455 456 // LIR_Op0 457 case lir_word_align: // result and info always invalid 458 case lir_backwardbranch_target: // result and info always invalid 459 case lir_build_frame: // result and info always invalid 460 case lir_fpop_raw: // result and info always invalid 461 case lir_24bit_FPU: // result and info always invalid 462 case lir_reset_FPU: // result and info always invalid 463 case lir_breakpoint: // result and info always invalid 464 case lir_membar: // result and info always invalid 465 case lir_membar_acquire: // result and info always invalid 466 case lir_membar_release: // result and info always invalid 467 { 468 assert(op->as_Op0() != NULL, "must be"); 469 assert(op->_info == NULL, "info not used by this instruction"); 470 assert(op->_result->is_illegal(), "not used"); 471 break; 472 } 473 474 case lir_nop: // may have info, result always invalid 475 case lir_std_entry: // may have result, info always invalid 476 case lir_osr_entry: // may have result, info always invalid 477 case lir_get_thread: // may have result, info always invalid 478 { 479 assert(op->as_Op0() != NULL, "must be"); 480 if (op->_info != NULL) do_info(op->_info); 481 if (op->_result->is_valid()) do_output(op->_result); 482 break; 483 } 484 485 486 // LIR_OpLabel 1590 } else { 1591 out->print(" "); 1592 } 1593 out->print(name()); out->print(" "); 1594 print_instr(out); 1595 if (info() != NULL) out->print(" [bci:%d]", info()->stack()->bci()); 1596 #ifdef ASSERT 1597 if (Verbose && _file != NULL) { 1598 out->print(" (%s:%d)", _file, _line); 1599 } 1600 #endif 1601 } 1602 1603 const char * LIR_Op::name() const { 1604 const char* s = NULL; 1605 switch(code()) { 1606 // LIR_Op0 1607 case lir_membar: s = "membar"; break; 1608 case lir_membar_acquire: s = "membar_acquire"; break; 1609 case lir_membar_release: s = "membar_release"; break; 1610 case lir_word_align: s = "word_align"; break; 1611 case lir_label: s = "label"; break; 1612 case lir_nop: s = "nop"; break; 1613 case lir_backwardbranch_target: s = "backbranch"; break; 1614 case lir_std_entry: s = "std_entry"; break; 1615 case lir_osr_entry: s = "osr_entry"; break; 1616 case lir_build_frame: s = "build_frm"; break; 1617 case lir_fpop_raw: s = "fpop_raw"; break; 1618 case lir_24bit_FPU: s = "24bit_FPU"; break; 1619 case lir_reset_FPU: s = "reset_FPU"; break; 1620 case lir_breakpoint: s = "breakpoint"; break; 1621 case lir_get_thread: s = "get_thread"; break; 1622 // LIR_Op1 1623 case lir_fxch: s = "fxch"; break; 1624 case lir_fld: s = "fld"; break; 1625 case lir_ffree: s = "ffree"; break; 1626 case lir_push: s = "push"; break; 1627 case lir_pop: s = "pop"; break; 1628 case lir_null_check: s = "null_check"; break; 1629 case lir_return: s = "return"; break; | 447 // switch that adds the operands for each instruction 448 449 void LIR_OpVisitState::visit(LIR_Op* op) { 450 // copy information from the LIR_Op 451 reset(); 452 set_op(op); 453 454 switch (op->code()) { 455 456 // LIR_Op0 457 case lir_word_align: // result and info always invalid 458 case lir_backwardbranch_target: // result and info always invalid 459 case lir_build_frame: // result and info always invalid 460 case lir_fpop_raw: // result and info always invalid 461 case lir_24bit_FPU: // result and info always invalid 462 case lir_reset_FPU: // result and info always invalid 463 case lir_breakpoint: // result and info always invalid 464 case lir_membar: // result and info always invalid 465 case lir_membar_acquire: // result and info always invalid 466 case lir_membar_release: // result and info always invalid 467 case lir_membar_loadload: // result and info always invalid 468 case lir_membar_storestore: // result and info always invalid 469 case lir_membar_loadstore: // result and info always invalid 470 case lir_membar_storeload: // result and info always invalid 471 { 472 assert(op->as_Op0() != NULL, "must be"); 473 assert(op->_info == NULL, "info not used by this instruction"); 474 assert(op->_result->is_illegal(), "not used"); 475 break; 476 } 477 478 case lir_nop: // may have info, result always invalid 479 case lir_std_entry: // may have result, info always invalid 480 case lir_osr_entry: // may have result, info always invalid 481 case lir_get_thread: // may have result, info always invalid 482 { 483 assert(op->as_Op0() != NULL, "must be"); 484 if (op->_info != NULL) do_info(op->_info); 485 if (op->_result->is_valid()) do_output(op->_result); 486 break; 487 } 488 489 490 // LIR_OpLabel 1594 } else { 1595 out->print(" "); 1596 } 1597 out->print(name()); out->print(" "); 1598 print_instr(out); 1599 if (info() != NULL) out->print(" [bci:%d]", info()->stack()->bci()); 1600 #ifdef ASSERT 1601 if (Verbose && _file != NULL) { 1602 out->print(" (%s:%d)", _file, _line); 1603 } 1604 #endif 1605 } 1606 1607 const char * LIR_Op::name() const { 1608 const char* s = NULL; 1609 switch(code()) { 1610 // LIR_Op0 1611 case lir_membar: s = "membar"; break; 1612 case lir_membar_acquire: s = "membar_acquire"; break; 1613 case lir_membar_release: s = "membar_release"; break; 1614 case lir_membar_loadload: s = "membar_loadload"; break; 1615 case lir_membar_storestore: s = "membar_storestore"; break; 1616 case lir_membar_loadstore: s = "membar_loadstore"; break; 1617 case lir_membar_storeload: s = "membar_storeload"; break; 1618 case lir_word_align: s = "word_align"; break; 1619 case lir_label: s = "label"; break; 1620 case lir_nop: s = "nop"; break; 1621 case lir_backwardbranch_target: s = "backbranch"; break; 1622 case lir_std_entry: s = "std_entry"; break; 1623 case lir_osr_entry: s = "osr_entry"; break; 1624 case lir_build_frame: s = "build_frm"; break; 1625 case lir_fpop_raw: s = "fpop_raw"; break; 1626 case lir_24bit_FPU: s = "24bit_FPU"; break; 1627 case lir_reset_FPU: s = "reset_FPU"; break; 1628 case lir_breakpoint: s = "breakpoint"; break; 1629 case lir_get_thread: s = "get_thread"; break; 1630 // LIR_Op1 1631 case lir_fxch: s = "fxch"; break; 1632 case lir_fld: s = "fld"; break; 1633 case lir_ffree: s = "ffree"; break; 1634 case lir_push: s = "push"; break; 1635 case lir_pop: s = "pop"; break; 1636 case lir_null_check: s = "null_check"; break; 1637 case lir_return: s = "return"; break; |