Mercurial > hg > truffle
comparison src/share/vm/opto/callnode.hpp @ 12175:3bfb204913de
Merge
author | adlertz |
---|---|
date | Thu, 05 Sep 2013 10:39:10 +0200 |
parents | 9758d9f36299 766fac3395d6 |
children | ad6695638a35 |
comparison
equal
deleted
inserted
replaced
12157:35b99e7e0af2 | 12175:3bfb204913de |
---|---|
447 //------------------------------SafePointScalarObjectNode---------------------- | 447 //------------------------------SafePointScalarObjectNode---------------------- |
448 // A SafePointScalarObjectNode represents the state of a scalarized object | 448 // A SafePointScalarObjectNode represents the state of a scalarized object |
449 // at a safepoint. | 449 // at a safepoint. |
450 | 450 |
451 class SafePointScalarObjectNode: public TypeNode { | 451 class SafePointScalarObjectNode: public TypeNode { |
452 uint _first_index; // First input edge index of a SafePoint node where | 452 uint _first_index; // First input edge relative index of a SafePoint node where |
453 // states of the scalarized object fields are collected. | 453 // states of the scalarized object fields are collected. |
454 // It is relative to the last (youngest) jvms->_scloff. | |
454 uint _n_fields; // Number of non-static fields of the scalarized object. | 455 uint _n_fields; // Number of non-static fields of the scalarized object. |
455 DEBUG_ONLY(AllocateNode* _alloc;) | 456 DEBUG_ONLY(AllocateNode* _alloc;) |
456 | 457 |
457 virtual uint hash() const ; // { return NO_HASH; } | 458 virtual uint hash() const ; // { return NO_HASH; } |
458 virtual uint cmp( const Node &n ) const; | 459 virtual uint cmp( const Node &n ) const; |
460 | |
461 uint first_index() const { return _first_index; } | |
459 | 462 |
460 public: | 463 public: |
461 SafePointScalarObjectNode(const TypeOopPtr* tp, | 464 SafePointScalarObjectNode(const TypeOopPtr* tp, |
462 #ifdef ASSERT | 465 #ifdef ASSERT |
463 AllocateNode* alloc, | 466 AllocateNode* alloc, |
467 virtual uint ideal_reg() const; | 470 virtual uint ideal_reg() const; |
468 virtual const RegMask &in_RegMask(uint) const; | 471 virtual const RegMask &in_RegMask(uint) const; |
469 virtual const RegMask &out_RegMask() const; | 472 virtual const RegMask &out_RegMask() const; |
470 virtual uint match_edge(uint idx) const; | 473 virtual uint match_edge(uint idx) const; |
471 | 474 |
472 uint first_index() const { return _first_index; } | 475 uint first_index(JVMState* jvms) const { |
476 assert(jvms != NULL, "missed JVMS"); | |
477 return jvms->scloff() + _first_index; | |
478 } | |
473 uint n_fields() const { return _n_fields; } | 479 uint n_fields() const { return _n_fields; } |
474 | 480 |
475 #ifdef ASSERT | 481 #ifdef ASSERT |
476 AllocateNode* alloc() const { return _alloc; } | 482 AllocateNode* alloc() const { return _alloc; } |
477 #endif | 483 #endif |
483 // between the start index of the jvmstates of "new_call" and "s" is | 489 // between the start index of the jvmstates of "new_call" and "s" is |
484 // "jvms_adj". Produce and return a SafePointScalarObjectNode that | 490 // "jvms_adj". Produce and return a SafePointScalarObjectNode that |
485 // corresponds appropriately to "this" in "new_call". Assumes that | 491 // corresponds appropriately to "this" in "new_call". Assumes that |
486 // "sosn_map" is a map, specific to the translation of "s" to "new_call", | 492 // "sosn_map" is a map, specific to the translation of "s" to "new_call", |
487 // mapping old SafePointScalarObjectNodes to new, to avoid multiple copies. | 493 // mapping old SafePointScalarObjectNodes to new, to avoid multiple copies. |
488 SafePointScalarObjectNode* clone(int jvms_adj, Dict* sosn_map) const; | 494 SafePointScalarObjectNode* clone(Dict* sosn_map) const; |
489 | 495 |
490 #ifndef PRODUCT | 496 #ifndef PRODUCT |
491 virtual void dump_spec(outputStream *st) const; | 497 virtual void dump_spec(outputStream *st) const; |
492 #endif | 498 #endif |
493 }; | 499 }; |