Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/library_call.cpp @ 950:8fe1963e3964
6875577: CTW fails with /hotspot/src/share/vm/opto/memnode.cpp
Summary: Fix do_null_check to check for unloaded klass for all oop pointers.
Reviewed-by: never, cfang
author | kvn |
---|---|
date | Fri, 28 Aug 2009 11:19:33 -0700 |
parents | fc2281ddce3c |
children | c7e94e8fff43 |
comparison
equal
deleted
inserted
replaced
949:489a4f8dcd0f | 950:8fe1963e3964 |
---|---|
3892 // Helper function for inline_native_clone. | 3892 // Helper function for inline_native_clone. |
3893 void LibraryCallKit::copy_to_clone(Node* obj, Node* alloc_obj, Node* obj_size, bool is_array, bool card_mark) { | 3893 void LibraryCallKit::copy_to_clone(Node* obj, Node* alloc_obj, Node* obj_size, bool is_array, bool card_mark) { |
3894 assert(obj_size != NULL, ""); | 3894 assert(obj_size != NULL, ""); |
3895 Node* raw_obj = alloc_obj->in(1); | 3895 Node* raw_obj = alloc_obj->in(1); |
3896 assert(alloc_obj->is_CheckCastPP() && raw_obj->is_Proj() && raw_obj->in(0)->is_Allocate(), ""); | 3896 assert(alloc_obj->is_CheckCastPP() && raw_obj->is_Proj() && raw_obj->in(0)->is_Allocate(), ""); |
3897 assert(alloc_obj->as_CheckCastPP()->type() != TypeInstPtr::NOTNULL, "should be more precise than Object"); | |
3897 | 3898 |
3898 if (ReduceBulkZeroing) { | 3899 if (ReduceBulkZeroing) { |
3899 // We will be completely responsible for initializing this object - | 3900 // We will be completely responsible for initializing this object - |
3900 // mark Initialize node as complete. | 3901 // mark Initialize node as complete. |
3901 AllocateNode* alloc = AllocateNode::Ideal_allocation(alloc_obj, &_gvn); | 3902 AllocateNode* alloc = AllocateNode::Ideal_allocation(alloc_obj, &_gvn); |
4445 && alloc->maybe_set_complete(&_gvn)) { | 4446 && alloc->maybe_set_complete(&_gvn)) { |
4446 // "You break it, you buy it." | 4447 // "You break it, you buy it." |
4447 InitializeNode* init = alloc->initialization(); | 4448 InitializeNode* init = alloc->initialization(); |
4448 assert(init->is_complete(), "we just did this"); | 4449 assert(init->is_complete(), "we just did this"); |
4449 assert(dest->is_CheckCastPP(), "sanity"); | 4450 assert(dest->is_CheckCastPP(), "sanity"); |
4451 assert(dest->as_CheckCastPP()->type() != TypeInstPtr::NOTNULL, "type should be more precise than Object"); | |
4450 assert(dest->in(0)->in(0) == init, "dest pinned"); | 4452 assert(dest->in(0)->in(0) == init, "dest pinned"); |
4451 | 4453 |
4452 // Cast to Object for arraycopy. | 4454 // Cast to Object for arraycopy. |
4453 // We can't use the original CheckCastPP since it should be moved | 4455 // We can't use the original CheckCastPP since it should be moved |
4454 // after the arraycopy to prevent stores flowing above it. | 4456 // after the arraycopy to prevent stores flowing above it. |