Mercurial > hg > graal-jvmci-8
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 }; |