comparison src/share/vm/c1/c1_LinearScan.cpp @ 2345:b9684d5ccb52

7011490: Wrong computation results in Test6880034 Summary: incorrect handling of c2i deoptimization on little endian architectures Reviewed-by: never
author vladidan
date Thu, 10 Mar 2011 14:56:11 -0500
parents b92c45f2bc75
children 1d1603768966
comparison
equal deleted inserted replaced
2336:df1347358fe6 2345:b9684d5ccb52
2701 // must be present 2701 // must be present
2702 assert(use_fpu_stack_allocation(), "should not have float stack values without fpu stack allocation (all floats must be SSE2)"); 2702 assert(use_fpu_stack_allocation(), "should not have float stack values without fpu stack allocation (all floats must be SSE2)");
2703 assert(_fpu_stack_allocator != NULL, "must be present"); 2703 assert(_fpu_stack_allocator != NULL, "must be present");
2704 opr = _fpu_stack_allocator->to_fpu_stack(opr); 2704 opr = _fpu_stack_allocator->to_fpu_stack(opr);
2705 2705
2706 assert(opr->fpu_regnrLo() == opr->fpu_regnrHi(), "assumed in calculation (only fpu_regnrHi is used)"); 2706 assert(opr->fpu_regnrLo() == opr->fpu_regnrHi(), "assumed in calculation (only fpu_regnrLo is used)");
2707 #endif 2707 #endif
2708 #ifdef SPARC 2708 #ifdef SPARC
2709 assert(opr->fpu_regnrLo() == opr->fpu_regnrHi() + 1, "assumed in calculation (only fpu_regnrHi is used)"); 2709 assert(opr->fpu_regnrLo() == opr->fpu_regnrHi() + 1, "assumed in calculation (only fpu_regnrHi is used)");
2710 #endif 2710 #endif
2711 #ifdef ARM 2711 #ifdef ARM
2713 #endif 2713 #endif
2714 #ifdef PPC 2714 #ifdef PPC
2715 assert(opr->fpu_regnrLo() == opr->fpu_regnrHi(), "assumed in calculation (only fpu_regnrHi is used)"); 2715 assert(opr->fpu_regnrLo() == opr->fpu_regnrHi(), "assumed in calculation (only fpu_regnrHi is used)");
2716 #endif 2716 #endif
2717 2717
2718 #ifdef VM_LITTLE_ENDIAN
2719 VMReg rname_first = frame_map()->fpu_regname(opr->fpu_regnrLo());
2720 #else
2718 VMReg rname_first = frame_map()->fpu_regname(opr->fpu_regnrHi()); 2721 VMReg rname_first = frame_map()->fpu_regname(opr->fpu_regnrHi());
2722 #endif
2723
2719 #ifdef _LP64 2724 #ifdef _LP64
2720 first = new LocationValue(Location::new_reg_loc(Location::dbl, rname_first)); 2725 first = new LocationValue(Location::new_reg_loc(Location::dbl, rname_first));
2721 second = &_int_0_scope_value; 2726 second = &_int_0_scope_value;
2722 #else 2727 #else
2723 first = new LocationValue(Location::new_reg_loc(Location::normal, rname_first)); 2728 first = new LocationValue(Location::new_reg_loc(Location::normal, rname_first));