512 513 void do_irem(); 514 515 // implementation of _get* and _put* bytecodes 516 void do_getstatic() { do_field_access(true, false); } 517 void do_getfield () { do_field_access(true, true); } 518 void do_putstatic() { do_field_access(false, false); } 519 void do_putfield () { do_field_access(false, true); } 520 521 // common code for making initial checks and forming addresses 522 void do_field_access(bool is_get, bool is_field); 523 bool static_field_ok_in_clinit(ciField *field, ciMethod *method); 524 525 // common code for actually performing the load or store 526 void do_get_xxx(Node* obj, ciField* field, bool is_field); 527 void do_put_xxx(Node* obj, ciField* field, bool is_field); 528 529 // implementation of object creation bytecodes 530 void emit_guard_for_new(ciInstanceKlass* klass); 531 void do_new(); 532 void do_vdefault(); 533 void do_vwithfield(); 534 void do_newarray(BasicType elemtype); 535 void do_newarray(); 536 void do_multianewarray(); 537 Node* expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions, int nargs); 538 539 void do_vbox(); 540 void do_vunbox(); 541 542 // implementation of jsr/ret 543 void do_jsr(); 544 void do_ret(); 545 546 float dynamic_branch_prediction(float &cnt, BoolTest::mask btest, Node* test); 547 float branch_prediction(float &cnt, BoolTest::mask btest, int target_bci, Node* test); 548 bool seems_never_taken(float prob) const; 549 bool path_is_suitable_for_uncommon_trap(float prob) const; 550 bool seems_stable_comparison() const; 551 552 void do_ifnull(BoolTest::mask btest, Node* c); 553 void do_if(BoolTest::mask btest, Node* c); 554 int repush_if_args(); 555 void adjust_map_after_if(BoolTest::mask btest, Node* c, float prob, 556 Block* path, Block* other_path); 557 void sharpen_type_after_if(BoolTest::mask btest, 558 Node* con, const Type* tcon, 559 Node* val, const Type* tval); 560 IfNode* jump_if_fork_int(Node* a, Node* b, BoolTest::mask mask); 561 Node* jump_if_join(Node* iffalse, Node* iftrue); | 512 513 void do_irem(); 514 515 // implementation of _get* and _put* bytecodes 516 void do_getstatic() { do_field_access(true, false); } 517 void do_getfield () { do_field_access(true, true); } 518 void do_putstatic() { do_field_access(false, false); } 519 void do_putfield () { do_field_access(false, true); } 520 521 // common code for making initial checks and forming addresses 522 void do_field_access(bool is_get, bool is_field); 523 bool static_field_ok_in_clinit(ciField *field, ciMethod *method); 524 525 // common code for actually performing the load or store 526 void do_get_xxx(Node* obj, ciField* field, bool is_field); 527 void do_put_xxx(Node* obj, ciField* field, bool is_field); 528 529 // implementation of object creation bytecodes 530 void emit_guard_for_new(ciInstanceKlass* klass); 531 void do_new(); 532 void do_defaultvalue(); 533 void do_withfield(); 534 void do_newarray(BasicType elemtype); 535 void do_newarray(); 536 void do_multianewarray(); 537 Node* expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions, int nargs); 538 539 // implementation of jsr/ret 540 void do_jsr(); 541 void do_ret(); 542 543 float dynamic_branch_prediction(float &cnt, BoolTest::mask btest, Node* test); 544 float branch_prediction(float &cnt, BoolTest::mask btest, int target_bci, Node* test); 545 bool seems_never_taken(float prob) const; 546 bool path_is_suitable_for_uncommon_trap(float prob) const; 547 bool seems_stable_comparison() const; 548 549 void do_ifnull(BoolTest::mask btest, Node* c); 550 void do_if(BoolTest::mask btest, Node* c); 551 int repush_if_args(); 552 void adjust_map_after_if(BoolTest::mask btest, Node* c, float prob, 553 Block* path, Block* other_path); 554 void sharpen_type_after_if(BoolTest::mask btest, 555 Node* con, const Type* tcon, 556 Node* val, const Type* tval); 557 IfNode* jump_if_fork_int(Node* a, Node* b, BoolTest::mask mask); 558 Node* jump_if_join(Node* iffalse, Node* iftrue); |