515 516 // Helper functions for type checking bytecodes: 517 void do_checkcast(); 518 void do_instanceof(); 519 520 // Helper functions for shifting & arithmetic 521 void modf(); 522 void modd(); 523 void l2f(); 524 525 void do_irem(); 526 527 // implementation of _get* and _put* bytecodes 528 void do_getstatic() { do_field_access(true, false); } 529 void do_getfield () { do_field_access(true, true); } 530 void do_putstatic() { do_field_access(false, false); } 531 void do_putfield () { do_field_access(false, true); } 532 533 // common code for making initial checks and forming addresses 534 void do_field_access(bool is_get, bool is_field); 535 bool static_field_ok_in_clinit(ciField *field, ciMethod *method); 536 537 // common code for actually performing the load or store 538 void do_get_xxx(Node* obj, ciField* field, bool is_field); 539 void do_put_xxx(Node* obj, ciField* field, bool is_field); 540 541 // implementation of object creation bytecodes 542 void emit_guard_for_new(ciInstanceKlass* klass); 543 void do_new(); 544 void do_newarray(BasicType elemtype); 545 void do_anewarray(); 546 void do_multianewarray(); 547 Node* expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions, int nargs); 548 549 // implementation of jsr/ret 550 void do_jsr(); 551 void do_ret(); 552 553 float dynamic_branch_prediction(float &cnt, BoolTest::mask btest, Node* test); 554 float branch_prediction(float &cnt, BoolTest::mask btest, int target_bci, Node* test); 555 bool seems_never_taken(float prob) const; 556 bool path_is_suitable_for_uncommon_trap(float prob) const; 557 bool seems_stable_comparison() const; 558 559 void do_ifnull(BoolTest::mask btest, Node* c); 560 void do_if(BoolTest::mask btest, Node* c); 561 int repush_if_args(); 562 void adjust_map_after_if(BoolTest::mask btest, Node* c, float prob, | 515 516 // Helper functions for type checking bytecodes: 517 void do_checkcast(); 518 void do_instanceof(); 519 520 // Helper functions for shifting & arithmetic 521 void modf(); 522 void modd(); 523 void l2f(); 524 525 void do_irem(); 526 527 // implementation of _get* and _put* bytecodes 528 void do_getstatic() { do_field_access(true, false); } 529 void do_getfield () { do_field_access(true, true); } 530 void do_putstatic() { do_field_access(false, false); } 531 void do_putfield () { do_field_access(false, true); } 532 533 // common code for making initial checks and forming addresses 534 void do_field_access(bool is_get, bool is_field); 535 536 // common code for actually performing the load or store 537 void do_get_xxx(Node* obj, ciField* field, bool is_field); 538 void do_put_xxx(Node* obj, ciField* field, bool is_field); 539 540 // implementation of object creation bytecodes 541 void do_new(); 542 void do_newarray(BasicType elemtype); 543 void do_anewarray(); 544 void do_multianewarray(); 545 Node* expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions, int nargs); 546 547 // implementation of jsr/ret 548 void do_jsr(); 549 void do_ret(); 550 551 float dynamic_branch_prediction(float &cnt, BoolTest::mask btest, Node* test); 552 float branch_prediction(float &cnt, BoolTest::mask btest, int target_bci, Node* test); 553 bool seems_never_taken(float prob) const; 554 bool path_is_suitable_for_uncommon_trap(float prob) const; 555 bool seems_stable_comparison() const; 556 557 void do_ifnull(BoolTest::mask btest, Node* c); 558 void do_if(BoolTest::mask btest, Node* c); 559 int repush_if_args(); 560 void adjust_map_after_if(BoolTest::mask btest, Node* c, float prob, |