comparison src/share/vm/code/pcDesc.hpp @ 1253:f70b0d9ab095

6910618: C2: Error: assert(d->is_oop(),"JVM_ArrayCopy: dst not an oop") Summary: Mark in PcDesc call sites which return oop and save the result oop across objects reallocation during deoptimization. Reviewed-by: never
author kvn
date Tue, 09 Feb 2010 01:31:13 -0800
parents e66fd840cb6b
children c18cbe5936b8
comparison
equal deleted inserted replaced
1252:f516d5d7a019 1253:f70b0d9ab095
37 union PcDescFlags { 37 union PcDescFlags {
38 int word; 38 int word;
39 struct { 39 struct {
40 unsigned int reexecute: 1; 40 unsigned int reexecute: 1;
41 unsigned int is_method_handle_invoke: 1; 41 unsigned int is_method_handle_invoke: 1;
42 unsigned int return_oop: 1;
42 } bits; 43 } bits;
43 bool operator ==(const PcDescFlags& other) { return word == other.word; } 44 bool operator ==(const PcDescFlags& other) { return word == other.word; }
44 } _flags; 45 } _flags;
45 46
46 public: 47 public:
74 } 75 }
75 76
76 bool is_method_handle_invoke() const { return _flags.bits.is_method_handle_invoke; } 77 bool is_method_handle_invoke() const { return _flags.bits.is_method_handle_invoke; }
77 void set_is_method_handle_invoke(bool z) { _flags.bits.is_method_handle_invoke = z; } 78 void set_is_method_handle_invoke(bool z) { _flags.bits.is_method_handle_invoke = z; }
78 79
80 bool return_oop() const { return _flags.bits.return_oop; }
81 void set_return_oop(bool z) { _flags.bits.return_oop = z; }
82
79 // Returns the real pc 83 // Returns the real pc
80 address real_pc(const nmethod* code) const; 84 address real_pc(const nmethod* code) const;
81 85
82 void print(nmethod* code); 86 void print(nmethod* code);
83 bool verify(nmethod* code); 87 bool verify(nmethod* code);