comparison src/share/vm/opto/idealKit.cpp @ 1000:a1423fe86a18

Merge
author trims
date Fri, 09 Oct 2009 15:18:52 -0700
parents 89e0543e1737 685e959d09ea
children c18cbe5936b8
comparison
equal deleted inserted replaced
984:6ddec5389232 1000:a1423fe86a18
376 return st; 376 return st;
377 } 377 }
378 378
379 // Card mark store. Must be ordered so that it will come after the store of 379 // Card mark store. Must be ordered so that it will come after the store of
380 // the oop. 380 // the oop.
381 Node* IdealKit::storeCM(Node* ctl, Node* adr, Node *val, Node* oop_store, 381 Node* IdealKit::storeCM(Node* ctl, Node* adr, Node *val, Node* oop_store, int oop_adr_idx,
382 BasicType bt, 382 BasicType bt,
383 int adr_idx) { 383 int adr_idx) {
384 assert(adr_idx != Compile::AliasIdxTop, "use other store_to_memory factory" ); 384 assert(adr_idx != Compile::AliasIdxTop, "use other store_to_memory factory" );
385 const TypePtr* adr_type = NULL; 385 const TypePtr* adr_type = NULL;
386 debug_only(adr_type = C->get_adr_type(adr_idx)); 386 debug_only(adr_type = C->get_adr_type(adr_idx));
387 Node *mem = memory(adr_idx); 387 Node *mem = memory(adr_idx);
388 388
389 // Add required edge to oop_store, optimizer does not support precedence edges. 389 // Add required edge to oop_store, optimizer does not support precedence edges.
390 // Convert required edge to precedence edge before allocation. 390 // Convert required edge to precedence edge before allocation.
391 Node* st = new (C, 5) StoreCMNode(ctl, mem, adr, adr_type, val, oop_store); 391 Node* st = new (C, 5) StoreCMNode(ctl, mem, adr, adr_type, val, oop_store, oop_adr_idx);
392 392
393 st = transform(st); 393 st = transform(st);
394 set_memory(st, adr_idx); 394 set_memory(st, adr_idx);
395 395
396 return st; 396 return st;