comparison src/share/vm/code/scopeDesc.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 72088be4b386
children c18cbe5936b8
comparison
equal deleted inserted replaced
1252:f516d5d7a019 1253:f70b0d9ab095
50 // nmethods possible; each scopeDesc describes a method activation 50 // nmethods possible; each scopeDesc describes a method activation
51 51
52 class ScopeDesc : public ResourceObj { 52 class ScopeDesc : public ResourceObj {
53 public: 53 public:
54 // Constructor 54 // Constructor
55 ScopeDesc(const nmethod* code, int decode_offset, int obj_decode_offset, bool reexecute); 55 ScopeDesc(const nmethod* code, int decode_offset, int obj_decode_offset, bool reexecute, bool return_oop);
56 56
57 // Calls above, giving default value of "serialized_null" to the 57 // Calls above, giving default value of "serialized_null" to the
58 // "obj_decode_offset" argument. (We don't use a default argument to 58 // "obj_decode_offset" argument. (We don't use a default argument to
59 // avoid a .hpp-.hpp dependency.) 59 // avoid a .hpp-.hpp dependency.)
60 ScopeDesc(const nmethod* code, int decode_offset, bool reexecute); 60 ScopeDesc(const nmethod* code, int decode_offset, bool reexecute, bool return_oop);
61 61
62 // JVM state 62 // JVM state
63 methodHandle method() const { return _method; } 63 methodHandle method() const { return _method; }
64 int bci() const { return _bci; } 64 int bci() const { return _bci; }
65 bool should_reexecute() const { return _reexecute; } 65 bool should_reexecute() const { return _reexecute; }
66 bool return_oop() const { return _return_oop; }
66 67
67 GrowableArray<ScopeValue*>* locals(); 68 GrowableArray<ScopeValue*>* locals();
68 GrowableArray<ScopeValue*>* expressions(); 69 GrowableArray<ScopeValue*>* expressions();
69 GrowableArray<MonitorValue*>* monitors(); 70 GrowableArray<MonitorValue*>* monitors();
70 GrowableArray<ScopeValue*>* objects(); 71 GrowableArray<ScopeValue*>* objects();
86 87
87 // JVM state 88 // JVM state
88 methodHandle _method; 89 methodHandle _method;
89 int _bci; 90 int _bci;
90 bool _reexecute; 91 bool _reexecute;
92 bool _return_oop;
91 93
92 // Decoding offsets 94 // Decoding offsets
93 int _decode_offset; 95 int _decode_offset;
94 int _sender_decode_offset; 96 int _sender_decode_offset;
95 int _locals_decode_offset; 97 int _locals_decode_offset;