Mercurial > hg > graal-compiler
comparison src/cpu/ppc/vm/vtableStubs_ppc_64.cpp @ 14436:b0133e4187d3
8028471: PPC64 (part 215): opto: Extend ImplicitNullCheck optimization.
Summary: Fixed Implicit NULL check optimization for AIX, where the page at address '0' is only write-protected.
Reviewed-by: kvn
author | goetz |
---|---|
date | Thu, 21 Nov 2013 18:29:34 -0800 |
parents | eb178e97560c |
children | 67fa91961822 |
comparison
equal
deleted
inserted
replaced
14435:da862781b584 | 14436:b0133e4187d3 |
---|---|
219 // If the vtable entry is null, the method is abstract. | 219 // If the vtable entry is null, the method is abstract. |
220 address ame_addr = __ pc(); // ame = abstract method error | 220 address ame_addr = __ pc(); // ame = abstract method error |
221 | 221 |
222 // Must do an explicit check if implicit checks are disabled. | 222 // Must do an explicit check if implicit checks are disabled. |
223 assert(!MacroAssembler::needs_explicit_null_check(in_bytes(Method::from_compiled_offset())), "sanity"); | 223 assert(!MacroAssembler::needs_explicit_null_check(in_bytes(Method::from_compiled_offset())), "sanity"); |
224 if (!ImplicitNullChecks NOT_LINUX(|| true) /*!os::zero_page_read_protected()*/) { | 224 if (!ImplicitNullChecks || !os::zero_page_read_protected()) { |
225 if (TrapBasedNullChecks) { | 225 if (TrapBasedNullChecks) { |
226 __ trap_null_check(R19_method); | 226 __ trap_null_check(R19_method); |
227 } else { | 227 } else { |
228 __ cmpdi(CCR0, R19_method, 0); | 228 __ cmpdi(CCR0, R19_method, 0); |
229 __ beq(CCR0, throw_icce); | 229 __ beq(CCR0, throw_icce); |