32 // exception/pc/handler information. |
32 // exception/pc/handler information. |
33 |
33 |
34 class ExceptionCache : public CHeapObj { |
34 class ExceptionCache : public CHeapObj { |
35 friend class VMStructs; |
35 friend class VMStructs; |
36 private: |
36 private: |
37 static address _unwind_handler; |
|
38 enum { cache_size = 16 }; |
37 enum { cache_size = 16 }; |
39 klassOop _exception_type; |
38 klassOop _exception_type; |
40 address _pc[cache_size]; |
39 address _pc[cache_size]; |
41 address _handler[cache_size]; |
40 address _handler[cache_size]; |
42 int _count; |
41 int _count; |
60 |
59 |
61 address match(Handle exception, address pc); |
60 address match(Handle exception, address pc); |
62 bool match_exception_with_space(Handle exception) ; |
61 bool match_exception_with_space(Handle exception) ; |
63 address test_address(address addr); |
62 address test_address(address addr); |
64 bool add_address_and_handler(address addr, address handler) ; |
63 bool add_address_and_handler(address addr, address handler) ; |
65 |
|
66 static address unwind_handler() { return _unwind_handler; } |
|
67 }; |
64 }; |
68 |
65 |
69 |
66 |
70 // cache pc descs found in earlier inquiries |
67 // cache pc descs found in earlier inquiries |
71 class PcDescCache VALUE_OBJ_CLASS_SPEC { |
68 class PcDescCache VALUE_OBJ_CLASS_SPEC { |