96 if (L_handle_null != NULL) {
97 __ cmpdi(CCR0, dst, 0);
98 __ beq(CCR0, *L_handle_null);
99 }
100 }
101 break;
102 }
103 default: Unimplemented();
104 }
105 }
106
107 void BarrierSetAssembler::resolve_jobject(MacroAssembler* masm, Register value,
108 Register tmp1, Register tmp2, bool needs_frame) {
109 Label done;
110 __ cmpdi(CCR0, value, 0);
111 __ beq(CCR0, done); // Use NULL as-is.
112
113 __ clrrdi(tmp1, value, JNIHandles::weak_tag_size);
114 __ ld(value, 0, tmp1); // Resolve (untagged) jobject.
115
116 __ verify_oop(value);
117 __ bind(done);
118 }
119
120 void BarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler* masm, Register dst, Register jni_env,
121 Register obj, Register tmp, Label& slowpath) {
122 __ clrrdi(dst, obj, JNIHandles::weak_tag_size);
123 __ ld(dst, 0, dst); // Resolve (untagged) jobject.
124 }
|
96 if (L_handle_null != NULL) {
97 __ cmpdi(CCR0, dst, 0);
98 __ beq(CCR0, *L_handle_null);
99 }
100 }
101 break;
102 }
103 default: Unimplemented();
104 }
105 }
106
107 void BarrierSetAssembler::resolve_jobject(MacroAssembler* masm, Register value,
108 Register tmp1, Register tmp2, bool needs_frame) {
109 Label done;
110 __ cmpdi(CCR0, value, 0);
111 __ beq(CCR0, done); // Use NULL as-is.
112
113 __ clrrdi(tmp1, value, JNIHandles::weak_tag_size);
114 __ ld(value, 0, tmp1); // Resolve (untagged) jobject.
115
116 __ verify_oop(value, FILE_AND_LINE);
117 __ bind(done);
118 }
119
120 void BarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler* masm, Register dst, Register jni_env,
121 Register obj, Register tmp, Label& slowpath) {
122 __ clrrdi(dst, obj, JNIHandles::weak_tag_size);
123 __ ld(dst, 0, dst); // Resolve (untagged) jobject.
124 }
|