478 // from register xmm0. Otherwise, the value is stored from the FPU stack.
479 void store_double(Address dst);
480
481 // pushes double TOS element of FPU stack on CPU stack; pops from FPU stack
482 void push_fTOS();
483
484 // pops double TOS element from CPU stack and pushes on FPU stack
485 void pop_fTOS();
486
487 void empty_FPU_stack();
488
489 void push_IU_state();
490 void pop_IU_state();
491
492 void push_FPU_state();
493 void pop_FPU_state();
494
495 void push_CPU_state();
496 void pop_CPU_state();
497
498 // Round up to a power of two
499 void round_to(Register reg, int modulus);
500
501 // Callee saved registers handling
502 void push_callee_saved_registers();
503 void pop_callee_saved_registers();
504
505 // allocation
506 void eden_allocate(
507 Register obj, // result: pointer to object after successful allocation
508 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
509 int con_size_in_bytes, // object size in bytes if known at compile time
510 Register t1, // temp register
511 Label& slow_case // continuation point if fast allocation fails
512 );
513 void tlab_allocate(
514 Register obj, // result: pointer to object after successful allocation
515 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
516 int con_size_in_bytes, // object size in bytes if known at compile time
517 Register t1, // temp register
853 void call(AddressLiteral entry);
854
855 // Emit the CompiledIC call idiom
856 void ic_call(address entry, jint method_index = 0);
857
858 // Jumps
859
860 // NOTE: these jumps tranfer to the effective address of dst NOT
861 // the address contained by dst. This is because this is more natural
862 // for jumps/calls.
863 void jump(AddressLiteral dst);
864 void jump_cc(Condition cc, AddressLiteral dst);
865
866 // 32bit can do a case table jump in one instruction but we no longer allow the base
867 // to be installed in the Address class. This jump will tranfers to the address
868 // contained in the location described by entry (not the address of entry)
869 void jump(ArrayAddress entry);
870
871 // Floating
872
873 void andpd(XMMRegister dst, Address src) { Assembler::andpd(dst, src); }
874 void andpd(XMMRegister dst, AddressLiteral src);
875 void andpd(XMMRegister dst, XMMRegister src) { Assembler::andpd(dst, src); }
876
877 void andps(XMMRegister dst, XMMRegister src) { Assembler::andps(dst, src); }
878 void andps(XMMRegister dst, Address src) { Assembler::andps(dst, src); }
879 void andps(XMMRegister dst, AddressLiteral src);
880
881 void comiss(XMMRegister dst, XMMRegister src) { Assembler::comiss(dst, src); }
882 void comiss(XMMRegister dst, Address src) { Assembler::comiss(dst, src); }
883 void comiss(XMMRegister dst, AddressLiteral src);
884
885 void comisd(XMMRegister dst, XMMRegister src) { Assembler::comisd(dst, src); }
886 void comisd(XMMRegister dst, Address src) { Assembler::comisd(dst, src); }
887 void comisd(XMMRegister dst, AddressLiteral src);
888
889 void fadd_s(Address src) { Assembler::fadd_s(src); }
890 void fadd_s(AddressLiteral src) { Assembler::fadd_s(as_Address(src)); }
891
892 void fldcw(Address src) { Assembler::fldcw(src); }
|
478 // from register xmm0. Otherwise, the value is stored from the FPU stack.
479 void store_double(Address dst);
480
481 // pushes double TOS element of FPU stack on CPU stack; pops from FPU stack
482 void push_fTOS();
483
484 // pops double TOS element from CPU stack and pushes on FPU stack
485 void pop_fTOS();
486
487 void empty_FPU_stack();
488
489 void push_IU_state();
490 void pop_IU_state();
491
492 void push_FPU_state();
493 void pop_FPU_state();
494
495 void push_CPU_state();
496 void pop_CPU_state();
497
498 DEBUG_ONLY(void stop_if_in_cont(Register cont_reg, const char* name);)
499
500 // Round up to a power of two
501 void round_to(Register reg, int modulus);
502
503 // Callee saved registers handling
504 void push_callee_saved_registers();
505 void pop_callee_saved_registers();
506
507 // allocation
508 void eden_allocate(
509 Register obj, // result: pointer to object after successful allocation
510 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
511 int con_size_in_bytes, // object size in bytes if known at compile time
512 Register t1, // temp register
513 Label& slow_case // continuation point if fast allocation fails
514 );
515 void tlab_allocate(
516 Register obj, // result: pointer to object after successful allocation
517 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
518 int con_size_in_bytes, // object size in bytes if known at compile time
519 Register t1, // temp register
855 void call(AddressLiteral entry);
856
857 // Emit the CompiledIC call idiom
858 void ic_call(address entry, jint method_index = 0);
859
860 // Jumps
861
862 // NOTE: these jumps tranfer to the effective address of dst NOT
863 // the address contained by dst. This is because this is more natural
864 // for jumps/calls.
865 void jump(AddressLiteral dst);
866 void jump_cc(Condition cc, AddressLiteral dst);
867
868 // 32bit can do a case table jump in one instruction but we no longer allow the base
869 // to be installed in the Address class. This jump will tranfers to the address
870 // contained in the location described by entry (not the address of entry)
871 void jump(ArrayAddress entry);
872
873 // Floating
874
875 void push_f(XMMRegister r);
876 void pop_f(XMMRegister r);
877 void push_d(XMMRegister r);
878 void pop_d(XMMRegister r);
879
880 void andpd(XMMRegister dst, Address src) { Assembler::andpd(dst, src); }
881 void andpd(XMMRegister dst, AddressLiteral src);
882 void andpd(XMMRegister dst, XMMRegister src) { Assembler::andpd(dst, src); }
883
884 void andps(XMMRegister dst, XMMRegister src) { Assembler::andps(dst, src); }
885 void andps(XMMRegister dst, Address src) { Assembler::andps(dst, src); }
886 void andps(XMMRegister dst, AddressLiteral src);
887
888 void comiss(XMMRegister dst, XMMRegister src) { Assembler::comiss(dst, src); }
889 void comiss(XMMRegister dst, Address src) { Assembler::comiss(dst, src); }
890 void comiss(XMMRegister dst, AddressLiteral src);
891
892 void comisd(XMMRegister dst, XMMRegister src) { Assembler::comisd(dst, src); }
893 void comisd(XMMRegister dst, Address src) { Assembler::comisd(dst, src); }
894 void comisd(XMMRegister dst, AddressLiteral src);
895
896 void fadd_s(Address src) { Assembler::fadd_s(src); }
897 void fadd_s(AddressLiteral src) { Assembler::fadd_s(as_Address(src)); }
898
899 void fldcw(Address src) { Assembler::fldcw(src); }
|