equal
deleted
inserted
replaced
478 } |
478 } |
479 |
479 |
480 bool next(); |
480 bool next(); |
481 |
481 |
482 DepType type() { return _type; } |
482 DepType type() { return _type; } |
|
483 bool has_oop_argument() { return type() == call_site_target_value; } |
|
484 uintptr_t get_identifier(int i); |
|
485 |
483 int argument_count() { return dep_args(type()); } |
486 int argument_count() { return dep_args(type()); } |
484 int argument_index(int i) { assert(0 <= i && i < argument_count(), "oob"); |
487 int argument_index(int i) { assert(0 <= i && i < argument_count(), "oob"); |
485 return _xi[i]; } |
488 return _xi[i]; } |
486 Metadata* argument(int i); // => recorded_oop_at(argument_index(i)) |
489 Metadata* argument(int i); // => recorded_oop_at(argument_index(i)) |
487 oop argument_oop(int i); // => recorded_oop_at(argument_index(i)) |
490 oop argument_oop(int i); // => recorded_oop_at(argument_index(i)) |
520 friend class Dependencies::DepStream; |
523 friend class Dependencies::DepStream; |
521 |
524 |
522 static void print_statistics() PRODUCT_RETURN; |
525 static void print_statistics() PRODUCT_RETURN; |
523 }; |
526 }; |
524 |
527 |
|
528 |
|
529 class DependencySignature : public ResourceObj { |
|
530 private: |
|
531 int _args_count; |
|
532 uintptr_t _argument_hash[Dependencies::max_arg_count]; |
|
533 Dependencies::DepType _type; |
|
534 |
|
535 |
|
536 public: |
|
537 DependencySignature(Dependencies::DepStream& dep) { |
|
538 _args_count = dep.argument_count(); |
|
539 _type = dep.type(); |
|
540 for (int i = 0; i < _args_count; i++) { |
|
541 _argument_hash[i] = dep.get_identifier(i); |
|
542 } |
|
543 } |
|
544 |
|
545 bool equals(const DependencySignature& sig) const; |
|
546 |
|
547 int args_count() const { return _args_count; } |
|
548 uintptr_t arg(int idx) const { return _argument_hash[idx]; } |
|
549 Dependencies::DepType type() const { return _type; } |
|
550 }; |
|
551 |
|
552 class DependencySignatureBuffer : public StackObj { |
|
553 private: |
|
554 GrowableArray<DependencySignature*>** _signatures; |
|
555 |
|
556 public: |
|
557 DependencySignatureBuffer(); |
|
558 bool add_if_missing(const DependencySignature& sig); |
|
559 }; |
525 |
560 |
526 // Every particular DepChange is a sub-class of this class. |
561 // Every particular DepChange is a sub-class of this class. |
527 class DepChange : public StackObj { |
562 class DepChange : public StackObj { |
528 public: |
563 public: |
529 // What kind of DepChange is this? |
564 // What kind of DepChange is this? |