Mercurial > hg > truffle
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; |