comparison src/share/vm/asm/codeBuffer.hpp @ 1204:18a389214829

6921352: JSR 292 needs its own deopt handler Summary: We need to introduce a new MH deopt handler so we can easily determine if the deopt happened at a MH call site or not. Reviewed-by: never, jrose
author twisti
date Mon, 01 Feb 2010 19:29:46 +0100
parents 24128c2ffa87
children 9f5b60a14736
comparison
equal deleted inserted replaced
1203:844a9d73ec22 1204:18a389214829
1 /* 1 /*
2 * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. 2 * Copyright 1997-2010 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
37 Frame_Complete, // Offset in the code where the frame setup is (for forte stackwalks) is complete 37 Frame_Complete, // Offset in the code where the frame setup is (for forte stackwalks) is complete
38 OSR_Entry, 38 OSR_Entry,
39 Dtrace_trap = OSR_Entry, // dtrace probes can never have an OSR entry so reuse it 39 Dtrace_trap = OSR_Entry, // dtrace probes can never have an OSR entry so reuse it
40 Exceptions, // Offset where exception handler lives 40 Exceptions, // Offset where exception handler lives
41 Deopt, // Offset where deopt handler lives 41 Deopt, // Offset where deopt handler lives
42 DeoptMH, // Offset where MethodHandle deopt handler lives
42 max_Entries }; 43 max_Entries };
43 44
44 // special value to note codeBlobs where profile (forte) stack walking is 45 // special value to note codeBlobs where profile (forte) stack walking is
45 // always dangerous and suspect. 46 // always dangerous and suspect.
46 47
49 private: 50 private:
50 int _values[max_Entries]; 51 int _values[max_Entries];
51 52
52 public: 53 public:
53 CodeOffsets() { 54 CodeOffsets() {
54 _values[Entry] = 0; 55 _values[Entry ] = 0;
55 _values[Verified_Entry] = 0; 56 _values[Verified_Entry] = 0;
56 _values[Frame_Complete] = frame_never_safe; 57 _values[Frame_Complete] = frame_never_safe;
57 _values[OSR_Entry] = 0; 58 _values[OSR_Entry ] = 0;
58 _values[Exceptions] = -1; 59 _values[Exceptions ] = -1;
59 _values[Deopt] = -1; 60 _values[Deopt ] = -1;
61 _values[DeoptMH ] = -1;
60 } 62 }
61 63
62 int value(Entries e) { return _values[e]; } 64 int value(Entries e) { return _values[e]; }
63 void set_value(Entries e, int val) { _values[e] = val; } 65 void set_value(Entries e, int val) { _values[e] = val; }
64 }; 66 };