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();