Mercurial > hg > graal-jvmci-8
comparison src/share/vm/code/vtableStubs.hpp @ 12355:cefad50507d8
Merge with hs25-b53
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Fri, 11 Oct 2013 10:38:03 +0200 |
parents | b2e698d2276c |
children | 9341a9963d36 |
comparison
equal
deleted
inserted
replaced
12058:ccb4f2af2319 | 12355:cefad50507d8 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. 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. |
44 short _ame_offset; // Where an AbstractMethodError might occur | 44 short _ame_offset; // Where an AbstractMethodError might occur |
45 short _npe_offset; // Where a NullPointerException might occur | 45 short _npe_offset; // Where a NullPointerException might occur |
46 bool _is_vtable_stub; // True if vtable stub, false, is itable stub | 46 bool _is_vtable_stub; // True if vtable stub, false, is itable stub |
47 /* code follows here */ // The vtableStub code | 47 /* code follows here */ // The vtableStub code |
48 | 48 |
49 void* operator new(size_t size, int code_size); | 49 void* operator new(size_t size, int code_size) throw(); |
50 | 50 |
51 VtableStub(bool is_vtable_stub, int index) | 51 VtableStub(bool is_vtable_stub, int index) |
52 : _next(NULL), _is_vtable_stub(is_vtable_stub), | 52 : _next(NULL), _is_vtable_stub(is_vtable_stub), |
53 _index(index), _ame_offset(-1), _npe_offset(-1) {} | 53 _index(index), _ame_offset(-1), _npe_offset(-1) {} |
54 VtableStub* next() const { return _next; } | 54 VtableStub* next() const { return _next; } |
119 static VtableStub* create_vtable_stub(int vtable_index); | 119 static VtableStub* create_vtable_stub(int vtable_index); |
120 static VtableStub* create_itable_stub(int vtable_index); | 120 static VtableStub* create_itable_stub(int vtable_index); |
121 static VtableStub* lookup (bool is_vtable_stub, int vtable_index); | 121 static VtableStub* lookup (bool is_vtable_stub, int vtable_index); |
122 static void enter (bool is_vtable_stub, int vtable_index, VtableStub* s); | 122 static void enter (bool is_vtable_stub, int vtable_index, VtableStub* s); |
123 static inline uint hash (bool is_vtable_stub, int vtable_index); | 123 static inline uint hash (bool is_vtable_stub, int vtable_index); |
124 static address find_stub (bool is_vtable_stub, int vtable_index); | |
124 | 125 |
125 public: | 126 public: |
126 static address create_stub(bool is_vtable_stub, int vtable_index, Method* method); // return the entry point of a stub for this call | 127 static address find_vtable_stub(int vtable_index) { return find_stub(true, vtable_index); } |
128 static address find_itable_stub(int itable_index) { return find_stub(false, itable_index); } | |
127 static bool is_entry_point(address pc); // is pc a vtable stub entry point? | 129 static bool is_entry_point(address pc); // is pc a vtable stub entry point? |
128 static bool contains(address pc); // is pc within any stub? | 130 static bool contains(address pc); // is pc within any stub? |
129 static VtableStub* stub_containing(address pc); // stub containing pc or NULL | 131 static VtableStub* stub_containing(address pc); // stub containing pc or NULL |
130 static int number_of_vtable_stubs() { return _number_of_vtable_stubs; } | 132 static int number_of_vtable_stubs() { return _number_of_vtable_stubs; } |
131 static void initialize(); | 133 static void initialize(); |