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