aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm
diff options
context:
space:
mode:
authornever <none@none>2011-09-11 14:48:24 -0700
committernever <none@none>2011-09-11 14:48:24 -0700
commit1ba80eadade14052eb5f6048c6c66214c4742ceb (patch)
treebf3cbf417a7ff50cde7c76ecf32b03708b6b9c48 /src/share/vm
parent0cb0b6357f69f9e8015d0aee4cf10a123e5e3fdf (diff)
7088955: add C2 IR support to the SA
Reviewed-by: kvn
Diffstat (limited to 'src/share/vm')
-rw-r--r--src/share/vm/ci/ciArrayKlass.hpp3
-rw-r--r--src/share/vm/ci/ciClassList.hpp4
-rw-r--r--src/share/vm/ci/ciConstant.hpp3
-rw-r--r--src/share/vm/ci/ciObjectFactory.hpp3
-rw-r--r--src/share/vm/compiler/compileBroker.hpp2
-rw-r--r--src/share/vm/memory/allocation.hpp4
-rw-r--r--src/share/vm/memory/resourceArea.hpp3
-rw-r--r--src/share/vm/oops/instanceKlass.cpp31
-rw-r--r--src/share/vm/oops/instanceKlass.hpp32
-rw-r--r--src/share/vm/opto/block.hpp10
-rw-r--r--src/share/vm/opto/bytecodeInfo.cpp19
-rw-r--r--src/share/vm/opto/callnode.hpp5
-rw-r--r--src/share/vm/opto/chaitin.hpp6
-rw-r--r--src/share/vm/opto/compile.hpp2
-rw-r--r--src/share/vm/opto/node.hpp9
-rw-r--r--src/share/vm/opto/optoreg.hpp3
-rw-r--r--src/share/vm/opto/parse.hpp7
-rw-r--r--src/share/vm/opto/regalloc.hpp3
-rw-r--r--src/share/vm/opto/type.hpp2
-rw-r--r--src/share/vm/prims/jvmtiExport.hpp1
-rw-r--r--src/share/vm/runtime/deoptimization.hpp2
-rw-r--r--src/share/vm/runtime/vframeArray.hpp6
-rw-r--r--src/share/vm/runtime/vmStructs.cpp730
-rw-r--r--src/share/vm/utilities/exceptions.hpp2
-rw-r--r--src/share/vm/utilities/growableArray.hpp6
25 files changed, 833 insertions, 65 deletions
diff --git a/src/share/vm/ci/ciArrayKlass.hpp b/src/share/vm/ci/ciArrayKlass.hpp
index 98b005156..aae2f3393 100644
--- a/src/share/vm/ci/ciArrayKlass.hpp
+++ b/src/share/vm/ci/ciArrayKlass.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@
// This class, and its subclasses represent klassOops in the
// HotSpot virtual machine whose Klass part is an arrayKlass.
class ciArrayKlass : public ciKlass {
+ CI_PACKAGE_ACCESS
private:
jint _dimension;
diff --git a/src/share/vm/ci/ciClassList.hpp b/src/share/vm/ci/ciClassList.hpp
index bc96594a3..4d19439fa 100644
--- a/src/share/vm/ci/ciClassList.hpp
+++ b/src/share/vm/ci/ciClassList.hpp
@@ -77,12 +77,14 @@ class ciTypeArrayKlassKlass;
// Everyone gives access to ciObjectFactory
#define CI_PACKAGE_ACCESS \
-friend class ciObjectFactory;
+friend class ciObjectFactory; \
+friend class VMStructs;
// These are the packages that have access to ciEnv
// Any more access must be given explicitly.
#define CI_PACKAGE_ACCESS_TO \
friend class ciObjectFactory; \
+friend class VMStructs; \
friend class ciCallSite; \
friend class ciConstantPoolCache; \
friend class ciField; \
diff --git a/src/share/vm/ci/ciConstant.hpp b/src/share/vm/ci/ciConstant.hpp
index 392c6bbd1..8cdc893fd 100644
--- a/src/share/vm/ci/ciConstant.hpp
+++ b/src/share/vm/ci/ciConstant.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@
//
// This class represents a constant value.
class ciConstant VALUE_OBJ_CLASS_SPEC {
+ friend class VMStructs;
private:
friend class ciEnv;
friend class ciField;
diff --git a/src/share/vm/ci/ciObjectFactory.hpp b/src/share/vm/ci/ciObjectFactory.hpp
index 12185f226..6222b9f85 100644
--- a/src/share/vm/ci/ciObjectFactory.hpp
+++ b/src/share/vm/ci/ciObjectFactory.hpp
@@ -36,6 +36,9 @@
// which ensures that for each oop, at most one ciObject is created.
// This invariant allows efficient implementation of ciObject.
class ciObjectFactory : public ResourceObj {
+ friend class VMStructs;
+ friend class ciEnv;
+
private:
static volatile bool _initialized;
static GrowableArray<ciObject*>* _shared_ci_objects;
diff --git a/src/share/vm/compiler/compileBroker.hpp b/src/share/vm/compiler/compileBroker.hpp
index eb571eebb..7abc37e54 100644
--- a/src/share/vm/compiler/compileBroker.hpp
+++ b/src/share/vm/compiler/compileBroker.hpp
@@ -37,6 +37,8 @@ class nmethodLocker;
// An entry in the compile queue. It represents a pending or current
// compilation.
class CompileTask : public CHeapObj {
+ friend class VMStructs;
+
private:
Monitor* _lock;
uint _compile_id;
diff --git a/src/share/vm/memory/allocation.hpp b/src/share/vm/memory/allocation.hpp
index b923cd470..4c2f1e8c8 100644
--- a/src/share/vm/memory/allocation.hpp
+++ b/src/share/vm/memory/allocation.hpp
@@ -151,6 +151,8 @@ class AllStatic {
//------------------------------Chunk------------------------------------------
// Linked list of raw memory chunks
class Chunk: public CHeapObj {
+ friend class VMStructs;
+
protected:
Chunk* _next; // Next Chunk in list
const size_t _len; // Size of this Chunk
@@ -200,6 +202,8 @@ protected:
friend class ResourceMark;
friend class HandleMark;
friend class NoHandleMark;
+ friend class VMStructs;
+
Chunk *_first; // First chunk
Chunk *_chunk; // current chunk
char *_hwm, *_max; // High water mark and max in current chunk
diff --git a/src/share/vm/memory/resourceArea.hpp b/src/share/vm/memory/resourceArea.hpp
index 728a12f57..3bb84b5e1 100644
--- a/src/share/vm/memory/resourceArea.hpp
+++ b/src/share/vm/memory/resourceArea.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -52,6 +52,7 @@
class ResourceArea: public Arena {
friend class ResourceMark;
friend class DeoptResourceMark;
+ friend class VMStructs;
debug_only(int _nesting;) // current # of nested ResourceMarks
debug_only(static int _warned;) // to suppress multiple warnings
diff --git a/src/share/vm/oops/instanceKlass.cpp b/src/share/vm/oops/instanceKlass.cpp
index 8a3c247b2..692dbc742 100644
--- a/src/share/vm/oops/instanceKlass.cpp
+++ b/src/share/vm/oops/instanceKlass.cpp
@@ -1372,37 +1372,6 @@ int instanceKlass::cached_itable_index(size_t idnum) {
//
-// nmethodBucket is used to record dependent nmethods for
-// deoptimization. nmethod dependencies are actually <klass, method>
-// pairs but we really only care about the klass part for purposes of
-// finding nmethods which might need to be deoptimized. Instead of
-// recording the method, a count of how many times a particular nmethod
-// was recorded is kept. This ensures that any recording errors are
-// noticed since an nmethod should be removed as many times are it's
-// added.
-//
-class nmethodBucket {
- private:
- nmethod* _nmethod;
- int _count;
- nmethodBucket* _next;
-
- public:
- nmethodBucket(nmethod* nmethod, nmethodBucket* next) {
- _nmethod = nmethod;
- _next = next;
- _count = 1;
- }
- int count() { return _count; }
- int increment() { _count += 1; return _count; }
- int decrement() { _count -= 1; assert(_count >= 0, "don't underflow"); return _count; }
- nmethodBucket* next() { return _next; }
- void set_next(nmethodBucket* b) { _next = b; }
- nmethod* get_nmethod() { return _nmethod; }
-};
-
-
-//
// Walk the list of dependent nmethods searching for nmethods which
// are dependent on the changes that were passed in and mark them for
// deoptimization. Returns the number of nmethods found.
diff --git a/src/share/vm/oops/instanceKlass.hpp b/src/share/vm/oops/instanceKlass.hpp
index 8fb55ada3..a87448a76 100644
--- a/src/share/vm/oops/instanceKlass.hpp
+++ b/src/share/vm/oops/instanceKlass.hpp
@@ -1012,4 +1012,36 @@ class PreviousVersionWalker : public StackObj {
PreviousVersionInfo* next_previous_version();
};
+
+//
+// nmethodBucket is used to record dependent nmethods for
+// deoptimization. nmethod dependencies are actually <klass, method>
+// pairs but we really only care about the klass part for purposes of
+// finding nmethods which might need to be deoptimized. Instead of
+// recording the method, a count of how many times a particular nmethod
+// was recorded is kept. This ensures that any recording errors are
+// noticed since an nmethod should be removed as many times are it's
+// added.
+//
+class nmethodBucket: public CHeapObj {
+ friend class VMStructs;
+ private:
+ nmethod* _nmethod;
+ int _count;
+ nmethodBucket* _next;
+
+ public:
+ nmethodBucket(nmethod* nmethod, nmethodBucket* next) {
+ _nmethod = nmethod;
+ _next = next;
+ _count = 1;
+ }
+ int count() { return _count; }
+ int increment() { _count += 1; return _count; }
+ int decrement() { _count -= 1; assert(_count >= 0, "don't underflow"); return _count; }
+ nmethodBucket* next() { return _next; }
+ void set_next(nmethodBucket* b) { _next = b; }
+ nmethod* get_nmethod() { return _nmethod; }
+};
+
#endif // SHARE_VM_OOPS_INSTANCEKLASS_HPP
diff --git a/src/share/vm/opto/block.hpp b/src/share/vm/opto/block.hpp
index 7a3c224ef..51869c8da 100644
--- a/src/share/vm/opto/block.hpp
+++ b/src/share/vm/opto/block.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -45,6 +45,7 @@ struct Tarjan;
// Note that the constructor just zeros things, and since I use Arena
// allocation I do not need a destructor to reclaim storage.
class Block_Array : public ResourceObj {
+ friend class VMStructs;
uint _size; // allocated size, as opposed to formal limit
debug_only(uint _limit;) // limit to formal domain
protected:
@@ -72,6 +73,7 @@ public:
class Block_List : public Block_Array {
+ friend class VMStructs;
public:
uint _cnt;
Block_List() : Block_Array(Thread::current()->resource_area()), _cnt(0) {}
@@ -87,6 +89,7 @@ public:
class CFGElement : public ResourceObj {
+ friend class VMStructs;
public:
float _freq; // Execution frequency (estimate)
@@ -102,6 +105,7 @@ class CFGElement : public ResourceObj {
// Basic blocks are used during the output routines, and are not used during
// any optimization pass. They are created late in the game.
class Block : public CFGElement {
+ friend class VMStructs;
public:
// Nodes in this block, in order
Node_List _nodes;
@@ -341,6 +345,7 @@ class Block : public CFGElement {
//------------------------------PhaseCFG---------------------------------------
// Build an array of Basic Block pointers, one per Node.
class PhaseCFG : public Phase {
+ friend class VMStructs;
private:
// Build a proper looking cfg. Return count of basic blocks
uint build_cfg();
@@ -515,6 +520,7 @@ public:
//------------------------------CFGLoop-------------------------------------------
class CFGLoop : public CFGElement {
+ friend class VMStructs;
int _id;
int _depth;
CFGLoop *_parent; // root of loop tree is the method level "pseudo" loop, it's parent is null
@@ -566,6 +572,7 @@ class CFGLoop : public CFGElement {
// A edge between two basic blocks that will be embodied by a branch or a
// fall-through.
class CFGEdge : public ResourceObj {
+ friend class VMStructs;
private:
Block * _from; // Source basic block
Block * _to; // Destination basic block
@@ -702,6 +709,7 @@ class Trace : public ResourceObj {
//------------------------------PhaseBlockLayout-------------------------------
// Rearrange blocks into some canonical order, based on edges and their frequencies
class PhaseBlockLayout : public Phase {
+ friend class VMStructs;
PhaseCFG &_cfg; // Control flow graph
GrowableArray<CFGEdge *> *edges;
diff --git a/src/share/vm/opto/bytecodeInfo.cpp b/src/share/vm/opto/bytecodeInfo.cpp
index a29159686..71754274b 100644
--- a/src/share/vm/opto/bytecodeInfo.cpp
+++ b/src/share/vm/opto/bytecodeInfo.cpp
@@ -610,3 +610,22 @@ InlineTree* InlineTree::find_subtree_from_root(InlineTree* root, JVMState* jvms,
}
return iltp;
}
+
+
+
+#ifndef PRODUCT
+void InlineTree::print_impl(outputStream* st, int indent) const {
+ for (int i = 0; i < indent; i++) st->print(" ");
+ st->print(" @ %d ", caller_bci());
+ method()->print_short_name(st);
+ st->cr();
+
+ for (int i = 0 ; i < _subtrees.length(); i++) {
+ _subtrees.at(i)->print_impl(st, indent + 2);
+ }
+}
+
+void InlineTree::print_value_on(outputStream* st) const {
+ print_impl(st, 2);
+}
+#endif
diff --git a/src/share/vm/opto/callnode.hpp b/src/share/vm/opto/callnode.hpp
index ee72a6e3a..6e81a7e8d 100644
--- a/src/share/vm/opto/callnode.hpp
+++ b/src/share/vm/opto/callnode.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -187,6 +187,7 @@ public:
// This provides a way to map the optimized program back into the interpreter,
// or to let the GC mark the stack.
class JVMState : public ResourceObj {
+ friend class VMStructs;
public:
typedef enum {
Reexecute_Undefined = -1, // not defined -- will be translated into false later
@@ -500,6 +501,7 @@ public:
// Call nodes now subsume the function of debug nodes at callsites, so they
// contain the functionality of a full scope chain of debug nodes.
class CallNode : public SafePointNode {
+ friend class VMStructs;
public:
const TypeFunc *_tf; // Function type
address _entry_point; // Address of method being called
@@ -565,6 +567,7 @@ public:
// convention. (The "Java" calling convention is the compiler's calling
// convention, as opposed to the interpreter's or that of native C.)
class CallJavaNode : public CallNode {
+ friend class VMStructs;
protected:
virtual uint cmp( const Node &n ) const;
virtual uint size_of() const; // Size is bigger
diff --git a/src/share/vm/opto/chaitin.hpp b/src/share/vm/opto/chaitin.hpp
index af116050c..999a79227 100644
--- a/src/share/vm/opto/chaitin.hpp
+++ b/src/share/vm/opto/chaitin.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -50,6 +50,7 @@ class PhaseChaitin;
//------------------------------LRG--------------------------------------------
// Live-RanGe structure.
class LRG : public ResourceObj {
+ friend class VMStructs;
public:
enum { SPILL_REG=29999 }; // Register number of a spilled LRG
@@ -181,6 +182,7 @@ public:
// Map Node indices to Live RanGe indices.
// Array lookup in the optimized case.
class LRG_List : public ResourceObj {
+ friend class VMStructs;
uint _cnt, _max;
uint* _lidxs;
ReallocMark _nesting; // assertion check for reallocations
@@ -211,6 +213,7 @@ public:
// abstract! It needs abstraction so I can fiddle with the implementation to
// get even more speed.
class PhaseIFG : public Phase {
+ friend class VMStructs;
// Current implementation: a triangular adjacency list.
// Array of adjacency-lists, indexed by live-range number
@@ -294,6 +297,7 @@ public:
//------------------------------Chaitin----------------------------------------
// Briggs-Chaitin style allocation, mostly.
class PhaseChaitin : public PhaseRegAlloc {
+ friend class VMStructs;
int _trip_cnt;
int _alternate;
diff --git a/src/share/vm/opto/compile.hpp b/src/share/vm/opto/compile.hpp
index 3a883188d..82e33a93a 100644
--- a/src/share/vm/opto/compile.hpp
+++ b/src/share/vm/opto/compile.hpp
@@ -80,6 +80,8 @@ class WarmCallInfo;
// This class defines a top-level Compiler invocation.
class Compile : public Phase {
+ friend class VMStructs;
+
public:
// Fixed alias indexes. (See also MergeMemNode.)
enum {
diff --git a/src/share/vm/opto/node.hpp b/src/share/vm/opto/node.hpp
index e88c4b96f..8564a7775 100644
--- a/src/share/vm/opto/node.hpp
+++ b/src/share/vm/opto/node.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -184,6 +184,8 @@ typedef Node** DUIterator_Last;
// whenever I have phase-specific information.
class Node {
+ friend class VMStructs;
+
// Lots of restrictions on cloning Nodes
Node(const Node&); // not defined; linker error to use these
Node &operator=(const Node &rhs);
@@ -1286,6 +1288,7 @@ class SimpleDUIterator : public StackObj {
// Note that the constructor just zeros things, and since I use Arena
// allocation I do not need a destructor to reclaim storage.
class Node_Array : public ResourceObj {
+ friend class VMStructs;
protected:
Arena *_a; // Arena to allocate in
uint _max;
@@ -1316,6 +1319,7 @@ public:
};
class Node_List : public Node_Array {
+ friend class VMStructs;
uint _cnt;
public:
Node_List() : Node_Array(Thread::current()->resource_area()), _cnt(0) {}
@@ -1339,6 +1343,7 @@ public:
//------------------------------Unique_Node_List-------------------------------
class Unique_Node_List : public Node_List {
+ friend class VMStructs;
VectorSet _in_worklist;
uint _clock_index; // Index in list where to pop from next
public:
@@ -1389,6 +1394,7 @@ inline void Compile::record_for_igvn(Node* n) {
//------------------------------Node_Stack-------------------------------------
class Node_Stack {
+ friend class VMStructs;
protected:
struct INode {
Node *node; // Processed node
@@ -1461,6 +1467,7 @@ public:
// Debugging or profiling annotations loosely and sparsely associated
// with some nodes. See Compile::node_notes_at for the accessor.
class Node_Notes VALUE_OBJ_CLASS_SPEC {
+ friend class VMStructs;
JVMState* _jvms;
public:
diff --git a/src/share/vm/opto/optoreg.hpp b/src/share/vm/opto/optoreg.hpp
index 58c9f1c69..e6427ea45 100644
--- a/src/share/vm/opto/optoreg.hpp
+++ b/src/share/vm/opto/optoreg.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -172,6 +172,7 @@ class OptoReg VALUE_OBJ_CLASS_SPEC {
// and converting that will return OptoReg::Bad losing the identity of the OptoReg.
class OptoRegPair {
+ friend class VMStructs;
private:
short _second;
short _first;
diff --git a/src/share/vm/opto/parse.hpp b/src/share/vm/opto/parse.hpp
index ea793f029..ec9a08358 100644
--- a/src/share/vm/opto/parse.hpp
+++ b/src/share/vm/opto/parse.hpp
@@ -41,6 +41,8 @@ class SwitchRange;
//------------------------------InlineTree-------------------------------------
class InlineTree : public ResourceObj {
+ friend class VMStructs;
+
Compile* C; // cache
JVMState* _caller_jvms; // state of caller
ciMethod* _method; // method being called by the caller_jvms
@@ -54,7 +56,8 @@ class InlineTree : public ResourceObj {
float compute_callee_frequency( int caller_bci ) const;
GrowableArray<InlineTree*> _subtrees;
- friend class Compile;
+
+ void print_impl(outputStream* stj, int indent) const PRODUCT_RETURN;
protected:
InlineTree(Compile* C,
@@ -121,6 +124,8 @@ public:
uint count_inlines() const { return _count_inlines; };
#endif
GrowableArray<InlineTree*> subtrees() { return _subtrees; }
+
+ void print_value_on(outputStream* st) const PRODUCT_RETURN;
};
diff --git a/src/share/vm/opto/regalloc.hpp b/src/share/vm/opto/regalloc.hpp
index 71f4defc2..d0a993e57 100644
--- a/src/share/vm/opto/regalloc.hpp
+++ b/src/share/vm/opto/regalloc.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -39,6 +39,7 @@ class PhaseCFG;
//------------------------------PhaseRegAlloc------------------------------------
// Abstract register allocator
class PhaseRegAlloc : public Phase {
+ friend class VMStructs;
static void (*_alloc_statistics[MAX_REG_ALLOCATORS])();
static int _num_allocators;
diff --git a/src/share/vm/opto/type.hpp b/src/share/vm/opto/type.hpp
index 4d08d50d5..133ce78f0 100644
--- a/src/share/vm/opto/type.hpp
+++ b/src/share/vm/opto/type.hpp
@@ -64,6 +64,8 @@ class TypeKlassPtr;
// different kind of Type exists. Types are never modified after creation, so
// all their interesting fields are constant.
class Type {
+ friend class VMStructs;
+
public:
enum TYPES {
Bad=0, // Type check
diff --git a/src/share/vm/prims/jvmtiExport.hpp b/src/share/vm/prims/jvmtiExport.hpp
index 07702b1d2..1bfefa05c 100644
--- a/src/share/vm/prims/jvmtiExport.hpp
+++ b/src/share/vm/prims/jvmtiExport.hpp
@@ -66,6 +66,7 @@ class AttachOperation;
// This class contains the JVMTI interface for the rest of hotspot.
//
class JvmtiExport : public AllStatic {
+ friend class VMStructs;
private:
static int _field_access_count;
static int _field_modification_count;
diff --git a/src/share/vm/runtime/deoptimization.hpp b/src/share/vm/runtime/deoptimization.hpp
index 161d3a31a..182254679 100644
--- a/src/share/vm/runtime/deoptimization.hpp
+++ b/src/share/vm/runtime/deoptimization.hpp
@@ -34,6 +34,8 @@ class MonitorValue;
class ObjectValue;
class Deoptimization : AllStatic {
+ friend class VMStructs;
+
public:
// What condition caused the deoptimization?
enum DeoptReason {
diff --git a/src/share/vm/runtime/vframeArray.hpp b/src/share/vm/runtime/vframeArray.hpp
index 7072d22e0..6f8d436c6 100644
--- a/src/share/vm/runtime/vframeArray.hpp
+++ b/src/share/vm/runtime/vframeArray.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,6 +47,8 @@ class StackValueCollection;
// represent an interpreter frame which will eventually be created.
class vframeArrayElement : public _ValueObj {
+ friend class VMStructs;
+
private:
frame _frame; // the interpreter frame we will unpack into
@@ -107,6 +109,8 @@ class vframeArrayElement : public _ValueObj {
// at the data in each vframeElement
class vframeArray: public CHeapObj {
+ friend class VMStructs;
+
private:
diff --git a/src/share/vm/runtime/vmStructs.cpp b/src/share/vm/runtime/vmStructs.cpp
index 40b703f15..69b3ab653 100644
--- a/src/share/vm/runtime/vmStructs.cpp
+++ b/src/share/vm/runtime/vmStructs.cpp
@@ -29,6 +29,11 @@
#include "classfile/placeholders.hpp"
#include "classfile/symbolTable.hpp"
#include "classfile/systemDictionary.hpp"
+#include "ci/ciField.hpp"
+#include "ci/ciInstance.hpp"
+#include "ci/ciObjArrayKlass.hpp"
+#include "ci/ciMethodData.hpp"
+#include "ci/ciSymbol.hpp"
#include "code/codeBlob.hpp"
#include "code/codeCache.hpp"
#include "code/compressedStream.hpp"
@@ -38,6 +43,7 @@
#include "code/stubs.hpp"
#include "code/vmreg.hpp"
#include "compiler/oopMap.hpp"
+#include "compiler/compileBroker.hpp"
#include "gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp"
#include "gc_implementation/shared/immutableSpace.hpp"
#include "gc_implementation/shared/markSweep.hpp"
@@ -90,6 +96,8 @@
#include "oops/typeArrayOop.hpp"
#include "prims/jvmtiAgentThread.hpp"
#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/vframeArray.hpp"
#include "runtime/globals.hpp"
#include "runtime/java.hpp"
#include "runtime/javaCalls.hpp"
@@ -167,7 +175,23 @@
#include "gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp"
#endif
#ifdef COMPILER2
+#include "opto/addnode.hpp"
+#include "opto/block.hpp"
+#include "opto/callnode.hpp"
+#include "opto/cfgnode.hpp"
+#include "opto/chaitin.hpp"
+#include "opto/divnode.hpp"
+#include "opto/locknode.hpp"
+#include "opto/loopnode.hpp"
+#include "opto/machnode.hpp"
#include "opto/matcher.hpp"
+#include "opto/mulnode.hpp"
+#include "opto/phaseX.hpp"
+#include "opto/parse.hpp"
+#include "opto/regalloc.hpp"
+#include "opto/rootnode.hpp"
+#include "opto/subnode.hpp"
+#include "opto/vectornode.hpp"
#ifdef TARGET_ARCH_MODEL_x86_32
# include "adfiles/adGlobals_x86_32.hpp"
#endif
@@ -294,6 +318,10 @@ static inline uint64_t cast_uint64_t(size_t x)
nonstatic_field(instanceKlass, _methods_annotations, objArrayOop) \
nonstatic_field(instanceKlass, _methods_parameter_annotations, objArrayOop) \
nonstatic_field(instanceKlass, _methods_default_annotations, objArrayOop) \
+ nonstatic_field(instanceKlass, _dependencies, nmethodBucket*) \
+ nonstatic_field(nmethodBucket, _nmethod, nmethod*) \
+ nonstatic_field(nmethodBucket, _count, int) \
+ nonstatic_field(nmethodBucket, _next, nmethodBucket*) \
nonstatic_field(Klass, _super_check_offset, juint) \
nonstatic_field(Klass, _secondary_super_cache, klassOop) \
nonstatic_field(Klass, _secondary_supers, objArrayOop) \
@@ -312,17 +340,26 @@ static inline uint64_t cast_uint64_t(size_t x)
nonstatic_field(methodKlass, _alloc_size, juint) \
nonstatic_field(methodDataOopDesc, _size, int) \
nonstatic_field(methodDataOopDesc, _method, methodOop) \
+ nonstatic_field(methodDataOopDesc, _data_size, int) \
+ nonstatic_field(methodDataOopDesc, _data[0], intptr_t) \
+ nonstatic_field(methodDataOopDesc, _nof_decompiles, uint) \
+ nonstatic_field(methodDataOopDesc, _nof_overflow_recompiles, uint) \
+ nonstatic_field(methodDataOopDesc, _nof_overflow_traps, uint) \
+ nonstatic_field(methodDataOopDesc, _eflags, intx) \
+ nonstatic_field(methodDataOopDesc, _arg_local, intx) \
+ nonstatic_field(methodDataOopDesc, _arg_stack, intx) \
+ nonstatic_field(methodDataOopDesc, _arg_returned, intx) \
nonstatic_field(methodOopDesc, _constMethod, constMethodOop) \
nonstatic_field(methodOopDesc, _constants, constantPoolOop) \
- c2_nonstatic_field(methodOopDesc, _method_data, methodDataOop) \
- c2_nonstatic_field(methodOopDesc, _interpreter_invocation_count, int) \
+ nonstatic_field(methodOopDesc, _method_data, methodDataOop) \
+ nonstatic_field(methodOopDesc, _interpreter_invocation_count, int) \
nonstatic_field(methodOopDesc, _access_flags, AccessFlags) \
nonstatic_field(methodOopDesc, _vtable_index, int) \
nonstatic_field(methodOopDesc, _method_size, u2) \
nonstatic_field(methodOopDesc, _max_stack, u2) \
nonstatic_field(methodOopDesc, _max_locals, u2) \
nonstatic_field(methodOopDesc, _size_of_parameters, u2) \
- c2_nonstatic_field(methodOopDesc, _interpreter_throwout_count, u2) \
+ nonstatic_field(methodOopDesc, _interpreter_throwout_count, u2) \
nonstatic_field(methodOopDesc, _number_of_breakpoints, u2) \
nonstatic_field(methodOopDesc, _invocation_counter, InvocationCounter) \
nonstatic_field(methodOopDesc, _backedge_counter, InvocationCounter) \
@@ -408,7 +445,7 @@ static inline uint64_t cast_uint64_t(size_t x)
static_field(Universe, _constantPoolCacheKlassObj, klassOop) \
static_field(Universe, _compiledICHolderKlassObj, klassOop) \
static_field(Universe, _systemObjArrayKlassObj, klassOop) \
- static_field(Universe, _mirrors[0], oop) \
+ static_field(Universe, _mirrors[0], oop) \
static_field(Universe, _main_thread_group, oop) \
static_field(Universe, _system_thread_group, oop) \
static_field(Universe, _the_empty_byte_array, typeArrayOop) \
@@ -709,6 +746,15 @@ static inline uint64_t cast_uint64_t(size_t x)
nonstatic_field(LoaderConstraintEntry, _max_loaders, int) \
nonstatic_field(LoaderConstraintEntry, _loaders, oop*) \
\
+ /*******************/ \
+ /* GrowableArrays */ \
+ /*******************/ \
+ \
+ nonstatic_field(GenericGrowableArray, _len, int) \
+ nonstatic_field(GenericGrowableArray, _max, int) \
+ nonstatic_field(GenericGrowableArray, _arena, Arena*) \
+ nonstatic_field(GrowableArray<int>, _data, int*) \
+ \
/********************************/ \
/* CodeCache (NOTE: incomplete) */ \
/********************************/ \
@@ -814,11 +860,14 @@ static inline uint64_t cast_uint64_t(size_t x)
nonstatic_field(nmethod, _lock_count, jint) \
nonstatic_field(nmethod, _stack_traversal_mark, long) \
nonstatic_field(nmethod, _compile_id, int) \
+ nonstatic_field(nmethod, _exception_cache, ExceptionCache*) \
nonstatic_field(nmethod, _marked_for_deoptimization, bool) \
\
nonstatic_field(RicochetBlob, _bounce_offset, int) \
nonstatic_field(RicochetBlob, _exception_offset, int) \
\
+ unchecked_c2_static_field(Deoptimization, _trap_reason_name, void*) \
+ \
/********************************/ \
/* JavaCalls (NOTE: incomplete) */ \
/********************************/ \
@@ -839,6 +888,9 @@ static inline uint64_t cast_uint64_t(size_t x)
static_field(Threads, _number_of_non_daemon_threads, int) \
static_field(Threads, _return_code, int) \
\
+ nonstatic_field(ThreadShadow, _pending_exception, oop) \
+ nonstatic_field(ThreadShadow, _exception_file, const char*) \
+ nonstatic_field(ThreadShadow, _exception_line, int) \
volatile_nonstatic_field(Thread, _suspend_flags, uint32_t) \
nonstatic_field(Thread, _active_handles, JNIHandleBlock*) \
nonstatic_field(Thread, _tlab, ThreadLocalAllocBuffer) \
@@ -850,10 +902,22 @@ static inline uint64_t cast_uint64_t(size_t x)
nonstatic_field(JavaThread, _next, JavaThread*) \
nonstatic_field(JavaThread, _threadObj, oop) \
nonstatic_field(JavaThread, _anchor, JavaFrameAnchor) \
+ nonstatic_field(JavaThread, _vm_result, oop) \
+ nonstatic_field(JavaThread, _vm_result_2, oop) \
+ nonstatic_field(JavaThread, _pending_async_exception, oop) \
+ volatile_nonstatic_field(JavaThread, _exception_oop, oop) \
+ volatile_nonstatic_field(JavaThread, _exception_pc, address) \
+ nonstatic_field(JavaThread, _is_compiling, bool) \
+ nonstatic_field(JavaThread, _special_runtime_exit_condition, JavaThread::AsyncRequests) \
+ nonstatic_field(JavaThread, _saved_exception_pc, address) \
volatile_nonstatic_field(JavaThread, _thread_state, JavaThreadState) \
nonstatic_field(JavaThread, _osthread, OSThread*) \
nonstatic_field(JavaThread, _stack_base, address) \
nonstatic_field(JavaThread, _stack_size, size_t) \
+ nonstatic_field(JavaThread, _vframe_array_head, vframeArray*) \
+ nonstatic_field(JavaThread, _vframe_array_last, vframeArray*) \
+ nonstatic_field(Thread, _resource_area, ResourceArea*) \
+ nonstatic_field(CompilerThread, _env, ciEnv*) \
\
/************/ \
/* OSThread */ \
@@ -903,7 +967,83 @@ static inline uint64_t cast_uint64_t(size_t x)
/* Runtime1 (NOTE: incomplete) */ \
/*******************************/ \
\
- unchecked_c1_static_field(Runtime1, _blobs, sizeof(Runtime1::_blobs)) /* NOTE: no type */ \
+ unchecked_c1_static_field(Runtime1, _blobs, sizeof(Runtime1::_blobs)) /* NOTE: no type */ \
+ \
+ /**************/ \
+ /* allocation */ \
+ /**************/ \
+ \
+ nonstatic_field(Chunk, _next, Chunk*) \
+ nonstatic_field(Chunk, _len, const size_t) \
+ \
+ nonstatic_field(Arena, _first, Chunk*) \
+ nonstatic_field(Arena, _chunk, Chunk*) \
+ nonstatic_field(Arena, _hwm, char*) \
+ nonstatic_field(Arena, _max, char*) \
+ \
+ /************/ \
+ /* CI */ \
+ /************/ \
+ \
+ nonstatic_field(ciEnv, _system_dictionary_modification_counter, int) \
+ nonstatic_field(ciEnv, _compiler_data, void*) \
+ nonstatic_field(ciEnv, _failure_reason, const char*) \
+ nonstatic_field(ciEnv, _factory, ciObjectFactory*) \
+ nonstatic_field(ciEnv, _dependencies, Dependencies*) \
+ nonstatic_field(ciEnv, _task, CompileTask*) \
+ nonstatic_field(ciEnv, _arena, Arena*) \
+ \
+ nonstatic_field(ciObject, _handle, jobject) \
+ nonstatic_field(ciObject, _klass, ciKlass*) \
+ nonstatic_field(ciObject, _ident, uint) \
+ \
+ nonstatic_field(ciSymbol, _ident, uint) \
+ nonstatic_field(ciSymbol, _symbol, Symbol*) \
+ \
+ nonstatic_field(ciType, _basic_type, BasicType) \
+ \
+ nonstatic_field(ciKlass, _name, ciSymbol*) \
+ \
+ nonstatic_field(ciArrayKlass, _dimension, jint) \
+ \
+ nonstatic_field(ciObjArrayKlass, _element_klass, ciKlass*) \
+ nonstatic_field(ciObjArrayKlass, _base_element_klass, ciKlass*) \
+ \
+ nonstatic_field(ciInstanceKlass, _init_state, instanceKlass::ClassState) \
+ nonstatic_field(ciInstanceKlass, _is_shared, bool) \
+ \
+ nonstatic_field(ciMethod, _interpreter_invocation_count, int) \
+ nonstatic_field(ciMethod, _interpreter_throwout_count, int) \
+ \
+ nonstatic_field(ciMethodData, _data_size, int) \
+ nonstatic_field(ciMethodData, _state, u_char) \
+ nonstatic_field(ciMethodData, _extra_data_size, int) \
+ nonstatic_field(ciMethodData, _data, intptr_t*) \
+ nonstatic_field(ciMethodData, _hint_di, int) \
+ nonstatic_field(ciMethodData, _eflags, intx) \
+ nonstatic_field(ciMethodData, _arg_local, intx) \
+ nonstatic_field(ciMethodData, _arg_stack, intx) \
+ nonstatic_field(ciMethodData, _arg_returned, intx) \
+ nonstatic_field(ciMethodData, _current_mileage, int) \
+ nonstatic_field(ciMethodData, _orig, methodDataOopDesc) \
+ \
+ nonstatic_field(ciField, _holder, ciInstanceKlass*) \
+ nonstatic_field(ciField, _name, ciSymbol*) \
+ nonstatic_field(ciField, _signature, ciSymbol*) \
+ nonstatic_field(ciField, _offset, int) \
+ nonstatic_field(ciField, _is_constant, bool) \
+ nonstatic_field(ciField, _constant_value, ciConstant) \
+ \
+ nonstatic_field(ciObjectFactory, _ci_objects, GrowableArray<ciObject*>*) \
+ nonstatic_field(ciObjectFactory, _symbols, GrowableArray<ciSymbol*>*) \
+ nonstatic_field(ciObjectFactory, _unloaded_methods, GrowableArray<ciMethod*>*) \
+ \
+ nonstatic_field(ciConstant, _type, BasicType) \
+ nonstatic_field(ciConstant, _value._int, jint) \
+ nonstatic_field(ciConstant, _value._long, jlong) \
+ nonstatic_field(ciConstant, _value._float, jfloat) \
+ nonstatic_field(ciConstant, _value._double, jdouble) \
+ nonstatic_field(ciConstant, _value._object, ciObject*) \
\
/************/ \
/* Monitors */ \
@@ -925,7 +1065,114 @@ static inline uint64_t cast_uint64_t(size_t x)
/* Matcher (C2 only) */ \
/*********************/ \
\
- unchecked_c2_static_field(Matcher, _regEncode, sizeof(Matcher::_regEncode)) /* NOTE: no type */ \
+ unchecked_c2_static_field(Matcher, _regEncode, sizeof(Matcher::_regEncode)) /* NOTE: no type */ \
+ \
+ c2_nonstatic_field(Node, _in, Node**) \
+ c2_nonstatic_field(Node, _out, Node**) \
+ c2_nonstatic_field(Node, _cnt, node_idx_t) \
+ c2_nonstatic_field(Node, _max, node_idx_t) \
+ c2_nonstatic_field(Node, _outcnt, node_idx_t) \
+ c2_nonstatic_field(Node, _outmax, node_idx_t) \
+ c2_nonstatic_field(Node, _idx, const node_idx_t) \
+ c2_nonstatic_field(Node, _class_id, jushort) \
+ c2_nonstatic_field(Node, _flags, jushort) \
+ \
+ c2_nonstatic_field(Compile, _root, RootNode*) \
+ c2_nonstatic_field(Compile, _unique, uint) \
+ c2_nonstatic_field(Compile, _entry_bci, int) \
+ c2_nonstatic_field(Compile, _top, Node*) \
+ c2_nonstatic_field(Compile, _cfg, PhaseCFG*) \
+ c2_nonstatic_field(Compile, _regalloc, PhaseRegAlloc*) \
+ c2_nonstatic_field(Compile, _method, ciMethod*) \
+ c2_nonstatic_field(Compile, _compile_id, const int) \
+ c2_nonstatic_field(Compile, _save_argument_registers, const bool) \
+ c2_nonstatic_field(Compile, _subsume_loads, const bool) \
+ c2_nonstatic_field(Compile, _do_escape_analysis, const bool) \
+ c2_nonstatic_field(Compile, _ilt, InlineTree*) \
+ \
+ c2_nonstatic_field(InlineTree, _caller_jvms, JVMState*) \
+ c2_nonstatic_field(InlineTree, _method, ciMethod*) \
+ c2_nonstatic_field(InlineTree, _caller_tree, InlineTree*) \
+ c2_nonstatic_field(InlineTree, _subtrees, GrowableArray<InlineTree*>) \
+ \
+ c2_nonstatic_field(OptoRegPair, _first, short) \
+ c2_nonstatic_field(OptoRegPair, _second, short) \
+ \
+ c2_nonstatic_field(JVMState, _caller, JVMState*) \
+ c2_nonstatic_field(JVMState, _depth, uint) \
+ c2_nonstatic_field(JVMState, _locoff, uint) \
+ c2_nonstatic_field(JVMState, _stkoff, uint) \
+ c2_nonstatic_field(JVMState, _monoff, uint) \
+ c2_nonstatic_field(JVMState, _scloff, uint) \
+ c2_nonstatic_field(JVMState, _endoff, uint) \
+ c2_nonstatic_field(JVMState, _sp, uint) \
+ c2_nonstatic_field(JVMState, _bci, int) \
+ c2_nonstatic_field(JVMState, _method, ciMethod*) \
+ c2_nonstatic_field(JVMState, _map, SafePointNode*) \
+ \
+ c2_nonstatic_field(SafePointNode, _jvms, JVMState* const) \
+ \
+ c2_nonstatic_field(MachSafePointNode, _jvms, JVMState*) \
+ c2_nonstatic_field(MachSafePointNode, _jvmadj, uint) \
+ \
+ c2_nonstatic_field(MachIfNode, _prob, jfloat) \
+ c2_nonstatic_field(MachIfNode, _fcnt, jfloat) \
+ \
+ c2_nonstatic_field(CallNode, _entry_point, address) \
+ \
+ c2_nonstatic_field(CallJavaNode, _method, ciMethod*) \
+ \
+ c2_nonstatic_field(CallRuntimeNode, _name, const char*) \
+ \
+ c2_nonstatic_field(CallStaticJavaNode, _name, const char*) \
+ \
+ c2_nonstatic_field(MachCallJavaNode, _method, ciMethod*) \
+ c2_nonstatic_field(MachCallJavaNode, _bci, int) \
+ \
+ c2_nonstatic_field(MachCallStaticJavaNode, _name, const char*) \
+ \
+ c2_nonstatic_field(MachCallRuntimeNode, _name, const char*) \
+ \
+ c2_nonstatic_field(PhaseCFG, _num_blocks, uint) \
+ c2_nonstatic_field(PhaseCFG, _blocks, Block_List) \
+ c2_nonstatic_field(PhaseCFG, _bbs, Block_Array) \
+ c2_nonstatic_field(PhaseCFG, _broot, Block*) \
+ \
+ c2_nonstatic_field(PhaseRegAlloc, _node_regs, OptoRegPair*) \
+ c2_nonstatic_field(PhaseRegAlloc, _node_regs_max_index, uint) \
+ c2_nonstatic_field(PhaseRegAlloc, _framesize, uint) \
+ c2_nonstatic_field(PhaseRegAlloc, _max_reg, OptoReg::Name) \
+ \
+ c2_nonstatic_field(PhaseChaitin, _trip_cnt, int) \
+ c2_nonstatic_field(PhaseChaitin, _alternate, int) \
+ c2_nonstatic_field(PhaseChaitin, _lo_degree, uint) \
+ c2_nonstatic_field(PhaseChaitin, _lo_stk_degree, uint) \
+ c2_nonstatic_field(PhaseChaitin, _hi_degree, uint) \
+ c2_nonstatic_field(PhaseChaitin, _simplified, uint) \
+ c2_nonstatic_field(PhaseChaitin, _maxlrg, uint) \
+ \
+ c2_nonstatic_field(Block, _nodes, Node_List) \
+ c2_nonstatic_field(Block, _succs, Block_Array) \
+ c2_nonstatic_field(Block, _num_succs, uint) \
+ c2_nonstatic_field(Block, _pre_order, uint) \
+ c2_nonstatic_field(Block, _dom_depth, uint) \
+ c2_nonstatic_field(Block, _idom, Block*) \
+ c2_nonstatic_field(Block, _freq, jfloat) \
+ \
+ c2_nonstatic_field(CFGElement, _freq, jfloat) \
+ \
+ c2_nonstatic_field(Block_List, _cnt, uint) \
+ \
+ c2_nonstatic_field(Block_Array, _size, uint) \
+ c2_nonstatic_field(Block_Array, _blocks, Block**) \
+ c2_nonstatic_field(Block_Array, _arena, Arena*) \
+ \
+ c2_nonstatic_field(Node_List, _cnt, uint) \
+ \
+ c2_nonstatic_field(Node_Array, _max, uint) \
+ c2_nonstatic_field(Node_Array, _nodes, Node**) \
+ c2_nonstatic_field(Node_Array, _a, Arena*) \
+ \
\
/*********************/ \
/* -XX flags */ \
@@ -935,6 +1182,7 @@ static inline uint64_t cast_uint64_t(size_t x)
nonstatic_field(Flag, name, const char*) \
unchecked_nonstatic_field(Flag, addr, sizeof(void*)) /* NOTE: no type */ \
nonstatic_field(Flag, kind, const char*) \
+ nonstatic_field(Flag, origin, FlagValueOrigin) \
static_field(Flag, flags, Flag*) \
static_field(Flag, numFlags, size_t) \
\
@@ -952,7 +1200,14 @@ static inline uint64_t cast_uint64_t(size_t x)
nonstatic_field(JDK_Version, _partially_initialized, bool) \
nonstatic_field(JDK_Version, _major, unsigned char) \
\
+ /*************************/ \
+ /* JVMTI */ \
+ /*************************/ \
\
+ static_field(JvmtiExport, _can_access_local_variables, bool) \
+ static_field(JvmtiExport, _can_hotswap_or_post_breakpoint, bool) \
+ static_field(JvmtiExport, _can_post_on_exceptions, bool) \
+ static_field(JvmtiExport, _can_walk_any_space, bool) \
\
/*************/ \
/* Arguments */ \
@@ -978,10 +1233,26 @@ static inline uint64_t cast_uint64_t(size_t x)
/* Miscellaneous fields */ \
/************************/ \
\
- nonstatic_field(AccessFlags, _flags, jint) \
- nonstatic_field(elapsedTimer, _counter, jlong) \
- nonstatic_field(elapsedTimer, _active, bool) \
- nonstatic_field(InvocationCounter, _counter, unsigned int)
+ nonstatic_field(CompileTask, _method, jobject) \
+ nonstatic_field(CompileTask, _osr_bci, int) \
+ nonstatic_field(CompileTask, _comp_level, int) \
+ nonstatic_field(CompileTask, _compile_id, uint) \
+ nonstatic_field(CompileTask, _next, CompileTask*) \
+ nonstatic_field(CompileTask, _prev, CompileTask*) \
+ \
+ nonstatic_field(vframeArray, _next, vframeArray*) \
+ nonstatic_field(vframeArray, _original, frame) \
+ nonstatic_field(vframeArray, _caller, frame) \
+ nonstatic_field(vframeArray, _frames, int) \
+ \
+ nonstatic_field(vframeArrayElement, _frame, frame) \
+ nonstatic_field(vframeArrayElement, _bci, int) \
+ nonstatic_field(vframeArrayElement, _method, methodOop) \
+ \
+ nonstatic_field(AccessFlags, _flags, jint) \
+ nonstatic_field(elapsedTimer, _counter, jlong) \
+ nonstatic_field(elapsedTimer, _active, bool) \
+ nonstatic_field(InvocationCounter, _counter, unsigned int)
/* NOTE that we do not use the last_entry() macro here; it is used */
/* in vmStructs_<os>_<cpu>.hpp's VM_STRUCTS_OS_CPU macro (and must */
@@ -1061,11 +1332,14 @@ static inline uint64_t cast_uint64_t(size_t x)
/* and are valid types for Fields. */ \
/*********************************************************************/ \
declare_integer_type(bool) \
+ declare_integer_type(short) \
declare_integer_type(int) \
declare_integer_type(long) \
declare_integer_type(char) \
declare_unsigned_integer_type(unsigned char) \
+ declare_unsigned_integer_type(u_char) \
declare_unsigned_integer_type(unsigned int) \
+ declare_unsigned_integer_type(uint) \
declare_unsigned_integer_type(unsigned short) \
declare_unsigned_integer_type(unsigned long) \
/* The compiler thinks this is a different type than */ \
@@ -1080,7 +1354,6 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_toplevel_type(int*) \
declare_toplevel_type(char*) \
declare_toplevel_type(char**) \
- declare_toplevel_type(const char*) \
declare_toplevel_type(u_char*) \
declare_toplevel_type(unsigned char*) \
\
@@ -1092,14 +1365,12 @@ static inline uint64_t cast_uint64_t(size_t x)
\
declare_unsigned_integer_type(size_t) \
declare_integer_type(ssize_t) \
- declare_unsigned_integer_type(const size_t) \
declare_integer_type(intx) \
declare_integer_type(intptr_t) \
declare_unsigned_integer_type(uintx) \
declare_unsigned_integer_type(uintptr_t) \
declare_unsigned_integer_type(uint32_t) \
declare_unsigned_integer_type(uint64_t) \
- declare_integer_type(const int) \
\
/*******************************************************************************/ \
/* OopDesc and Klass hierarchies (NOTE: missing methodDataOop-related classes) */ \
@@ -1125,8 +1396,8 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_type(klassKlass, Klass) \
declare_type(klassOopDesc, oopDesc) \
declare_type(markOopDesc, oopDesc) \
- declare_type(methodDataKlass, Klass) \
- declare_type(methodDataOopDesc, oopDesc) \
+ declare_type(methodDataKlass, Klass) \
+ declare_type(methodDataOopDesc, oopDesc) \
declare_type(methodKlass, Klass) \
declare_type(constMethodKlass, Klass) \
declare_type(methodOopDesc, oopDesc) \
@@ -1140,6 +1411,8 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_toplevel_type(Symbol) \
declare_toplevel_type(Symbol*) \
\
+ declare_toplevel_type(nmethodBucket) \
+ \
/********/ \
/* Oops */ \
/********/ \
@@ -1207,7 +1480,6 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_toplevel_type(GenerationSpec) \
declare_toplevel_type(HeapWord) \
declare_toplevel_type(MemRegion) \
- declare_toplevel_type(const MemRegion) \
declare_toplevel_type(PermanentGenerationSpec) \
declare_toplevel_type(ThreadLocalAllocBuffer) \
declare_toplevel_type(VirtualSpace) \
@@ -1268,6 +1540,12 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_toplevel_type(SystemDictionary) \
declare_toplevel_type(ProtectionDomainEntry) \
\
+ declare_toplevel_type(GenericGrowableArray) \
+ declare_toplevel_type(GrowableArray<int>) \
+ declare_toplevel_type(Arena) \
+ declare_type(ResourceArea, Arena) \
+ declare_toplevel_type(Chunk) \
+ \
/***********************************************************/ \
/* Thread hierarchy (needed for run-time type information) */ \
/***********************************************************/ \
@@ -1280,7 +1558,7 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_type(JavaThread, Thread) \
declare_type(JvmtiAgentThread, JavaThread) \
declare_type(ServiceThread, JavaThread) \
- declare_type(CompilerThread, JavaThread) \
+ declare_type(CompilerThread, JavaThread) \
declare_toplevel_type(OSThread) \
declare_toplevel_type(JavaFrameAnchor) \
\
@@ -1346,6 +1624,11 @@ static inline uint64_t cast_uint64_t(size_t x)
/***************************************/ \
\
declare_toplevel_type(PcDesc) \
+ declare_toplevel_type(ExceptionCache) \
+ declare_toplevel_type(PcDescCache) \
+ declare_toplevel_type(Dependencies) \
+ declare_toplevel_type(CompileTask) \
+ declare_toplevel_type(Deoptimization) \
\
/************************/ \
/* OopMap and OopMapSet */ \
@@ -1372,6 +1655,7 @@ static inline uint64_t cast_uint64_t(size_t x)
\
declare_toplevel_type(JNIHandles) \
declare_toplevel_type(JNIHandleBlock) \
+ declare_toplevel_type(jobject) \
\
/**********************/ \
/* Runtime1 (C1 only) */ \
@@ -1392,9 +1676,349 @@ static inline uint64_t cast_uint64_t(size_t x)
/* Matcher (C2 only) */ \
/*********************/ \
\
- /* NOTE: this is not really a toplevel type, but we only need */ \
- /* this one -- FIXME later if necessary */ \
declare_c2_toplevel_type(Matcher) \
+ declare_c2_toplevel_type(Compile) \
+ declare_c2_toplevel_type(InlineTree) \
+ declare_c2_toplevel_type(OptoRegPair) \
+ declare_c2_toplevel_type(JVMState) \
+ declare_c2_toplevel_type(Phase) \
+ declare_c2_type(PhaseCFG, Phase) \
+ declare_c2_type(PhaseRegAlloc, Phase) \
+ declare_c2_type(PhaseChaitin, PhaseRegAlloc) \
+ declare_c2_toplevel_type(CFGElement) \
+ declare_c2_type(Block, CFGElement) \
+ declare_c2_toplevel_type(Block_Array) \
+ declare_c2_type(Block_List, Block_Array) \
+ declare_c2_toplevel_type(Node_Array) \
+ declare_c2_type(Node_List, Node_Array) \
+ declare_c2_type(Unique_Node_List, Node_List) \
+ declare_c2_toplevel_type(Node) \
+ declare_c2_type(AddNode, Node) \
+ declare_c2_type(AddINode, AddNode) \
+ declare_c2_type(AddLNode, AddNode) \
+ declare_c2_type(AddFNode, AddNode) \
+ declare_c2_type(AddDNode, AddNode) \
+ declare_c2_type(AddPNode, Node) \
+ declare_c2_type(OrINode, AddNode) \
+ declare_c2_type(OrLNode, AddNode) \
+ declare_c2_type(XorINode, AddNode) \
+ declare_c2_type(XorLNode, AddNode) \
+ declare_c2_type(MaxNode, AddNode) \
+ declare_c2_type(MaxINode, MaxNode) \
+ declare_c2_type(MinINode, MaxNode) \
+ declare_c2_type(StartNode, MultiNode) \
+ declare_c2_type(StartOSRNode, StartNode) \
+ declare_c2_type(ParmNode, ProjNode) \
+ declare_c2_type(ReturnNode, Node) \
+ declare_c2_type(RethrowNode, Node) \
+ declare_c2_type(TailCallNode, ReturnNode) \
+ declare_c2_type(TailJumpNode, ReturnNode) \
+ declare_c2_type(SafePointNode, MultiNode) \
+ declare_c2_type(CallNode, SafePointNode) \
+ declare_c2_type(CallJavaNode, CallNode) \
+ declare_c2_type(CallStaticJavaNode, CallJavaNode) \
+ declare_c2_type(CallDynamicJavaNode, CallJavaNode) \
+ declare_c2_type(CallRuntimeNode, CallNode) \
+ declare_c2_type(CallLeafNode, CallRuntimeNode) \
+ declare_c2_type(CallLeafNoFPNode, CallLeafNode) \
+ declare_c2_type(AllocateNode, CallNode) \
+ declare_c2_type(AllocateArrayNode, AllocateNode) \
+ declare_c2_type(LockNode, AbstractLockNode) \
+ declare_c2_type(UnlockNode, AbstractLockNode) \
+ declare_c2_type(FastLockNode, CmpNode) \
+ declare_c2_type(FastUnlockNode, CmpNode) \
+ declare_c2_type(RegionNode, Node) \
+ declare_c2_type(JProjNode, ProjNode) \
+ declare_c2_type(PhiNode, TypeNode) \
+ declare_c2_type(GotoNode, Node) \
+ declare_c2_type(CProjNode, ProjNode) \
+ declare_c2_type(MultiBranchNode, MultiNode) \
+ declare_c2_type(IfNode, MultiBranchNode) \
+ declare_c2_type(IfTrueNode, CProjNode) \
+ declare_c2_type(IfFalseNode, CProjNode) \
+ declare_c2_type(PCTableNode, MultiBranchNode) \
+ declare_c2_type(JumpNode, PCTableNode) \
+ declare_c2_type(JumpProjNode, JProjNode) \
+ declare_c2_type(CatchNode, PCTableNode) \
+ declare_c2_type(CatchProjNode, CProjNode) \
+ declare_c2_type(CreateExNode, TypeNode) \
+ declare_c2_type(ClearArrayNode, Node) \
+ declare_c2_type(NeverBranchNode, MultiBranchNode) \
+ declare_c2_type(ConNode, TypeNode) \
+ declare_c2_type(ConINode, ConNode) \
+ declare_c2_type(ConPNode, ConNode) \
+ declare_c2_type(ConNNode, ConNode) \
+ declare_c2_type(ConLNode, ConNode) \
+ declare_c2_type(ConFNode, ConNode) \
+ declare_c2_type(ConDNode, ConNode) \
+ declare_c2_type(BinaryNode, Node) \
+ declare_c2_type(CMoveNode, TypeNode) \
+ declare_c2_type(CMoveDNode, CMoveNode) \
+ declare_c2_type(CMoveFNode, CMoveNode) \
+ declare_c2_type(CMoveINode, CMoveNode) \
+ declare_c2_type(CMoveLNode, CMoveNode) \
+ declare_c2_type(CMovePNode, CMoveNode) \
+ declare_c2_type(CMoveNNode, CMoveNode) \
+ declare_c2_type(EncodePNode, TypeNode) \
+ declare_c2_type(DecodeNNode, TypeNode) \
+ declare_c2_type(ConstraintCastNode, TypeNode) \
+ declare_c2_type(CastIINode, ConstraintCastNode) \
+ declare_c2_type(CastPPNode, ConstraintCastNode) \
+ declare_c2_type(CheckCastPPNode, TypeNode) \
+ declare_c2_type(Conv2BNode, Node) \
+ declare_c2_type(ConvD2FNode, Node) \
+ declare_c2_type(ConvD2INode, Node) \
+ declare_c2_type(ConvD2LNode, Node) \
+ declare_c2_type(ConvF2DNode, Node) \
+ declare_c2_type(ConvF2INode, Node) \
+ declare_c2_type(ConvF2LNode, Node) \
+ declare_c2_type(ConvI2DNode, Node) \
+ declare_c2_type(ConvI2FNode, Node) \
+ declare_c2_type(ConvI2LNode, TypeNode) \
+ declare_c2_type(ConvL2DNode, Node) \
+ declare_c2_type(ConvL2FNode, Node) \
+ declare_c2_type(ConvL2INode, Node) \
+ declare_c2_type(CastX2PNode, Node) \
+ declare_c2_type(CastP2XNode, Node) \
+ declare_c2_type(MemBarNode, MultiNode) \
+ declare_c2_type(MemBarAcquireNode, MemBarNode) \
+ declare_c2_type(MemBarReleaseNode, MemBarNode) \
+ declare_c2_type(MemBarVolatileNode, MemBarNode) \
+ declare_c2_type(MemBarCPUOrderNode, MemBarNode) \
+ declare_c2_type(InitializeNode, MemBarNode) \
+ declare_c2_type(ThreadLocalNode, Node) \
+ declare_c2_type(Opaque1Node, Node) \
+ declare_c2_type(Opaque2Node, Node) \
+ declare_c2_type(PartialSubtypeCheckNode, Node) \
+ declare_c2_type(MoveI2FNode, Node) \
+ declare_c2_type(MoveL2DNode, Node) \
+ declare_c2_type(MoveF2INode, Node) \
+ declare_c2_type(MoveD2LNode, Node) \
+ declare_c2_type(DivINode, Node) \
+ declare_c2_type(DivLNode, Node) \
+ declare_c2_type(DivFNode, Node) \
+ declare_c2_type(DivDNode, Node) \
+ declare_c2_type(ModINode, Node) \
+ declare_c2_type(ModLNode, Node) \
+ declare_c2_type(ModFNode, Node) \
+ declare_c2_type(ModDNode, Node) \
+ declare_c2_type(DivModNode, MultiNode) \
+ declare_c2_type(DivModINode, DivModNode) \
+ declare_c2_type(DivModLNode, DivModNode) \
+ declare_c2_type(BoxLockNode, Node) \
+ declare_c2_type(LoopNode, RegionNode) \
+ declare_c2_type(CountedLoopNode, LoopNode) \
+ declare_c2_type(CountedLoopEndNode, IfNode) \
+ declare_c2_type(MachNode, Node) \
+ declare_c2_type(MachIdealNode, MachNode) \
+ declare_c2_type(MachTypeNode, MachNode) \
+ declare_c2_type(MachBreakpointNode, MachIdealNode) \
+ declare_c2_type(MachUEPNode, MachIdealNode) \
+ declare_c2_type(MachPrologNode, MachIdealNode) \
+ declare_c2_type(MachEpilogNode, MachIdealNode) \
+ declare_c2_type(MachNopNode, MachIdealNode) \
+ declare_c2_type(MachSpillCopyNode, MachIdealNode) \
+ declare_c2_type(MachNullCheckNode, MachIdealNode) \
+ declare_c2_type(MachProjNode, ProjNode) \
+ declare_c2_type(MachIfNode, MachNode) \
+ declare_c2_type(MachFastLockNode, MachNode) \
+ declare_c2_type(MachReturnNode, MachNode) \
+ declare_c2_type(MachSafePointNode, MachReturnNode) \
+ declare_c2_type(MachCallNode, MachSafePointNode) \
+ declare_c2_type(MachCallJavaNode, MachCallNode) \
+ declare_c2_type(MachCallStaticJavaNode, MachCallJavaNode) \
+ declare_c2_type(MachCallDynamicJavaNode, MachCallJavaNode) \
+ declare_c2_type(MachCallRuntimeNode, MachCallNode) \
+ declare_c2_type(MachHaltNode, MachReturnNode) \
+ declare_c2_type(MachTempNode, MachNode) \
+ declare_c2_type(MemNode, Node) \
+ declare_c2_type(MergeMemNode, Node) \
+ declare_c2_type(LoadNode, MemNode) \
+ declare_c2_type(LoadBNode, LoadNode) \
+ declare_c2_type(LoadUSNode, LoadNode) \
+ declare_c2_type(LoadINode, LoadNode) \
+ declare_c2_type(LoadRangeNode, LoadINode) \
+ declare_c2_type(LoadLNode, LoadNode) \
+ declare_c2_type(LoadL_unalignedNode, LoadLNode) \
+ declare_c2_type(LoadFNode, LoadNode) \
+ declare_c2_type(LoadDNode, LoadNode) \
+ declare_c2_type(LoadD_unalignedNode, LoadDNode) \
+ declare_c2_type(LoadPNode, LoadNode) \
+ declare_c2_type(LoadNNode, LoadNode) \
+ declare_c2_type(LoadKlassNode, LoadPNode) \
+ declare_c2_type(LoadNKlassNode, LoadNNode) \
+ declare_c2_type(LoadSNode, LoadNode) \
+ declare_c2_type(StoreNode, MemNode) \
+ declare_c2_type(StoreBNode, StoreNode) \
+ declare_c2_type(StoreCNode, StoreNode) \
+ declare_c2_type(StoreINode, StoreNode) \
+ declare_c2_type(StoreLNode, StoreNode) \
+ declare_c2_type(StoreFNode, StoreNode) \
+ declare_c2_type(StoreDNode, StoreNode) \
+ declare_c2_type(StorePNode, StoreNode) \
+ declare_c2_type(StoreNNode, StoreNode) \
+ declare_c2_type(StoreCMNode, StoreNode) \
+ declare_c2_type(LoadPLockedNode, LoadPNode) \
+ declare_c2_type(LoadLLockedNode, LoadLNode) \
+ declare_c2_type(SCMemProjNode, ProjNode) \
+ declare_c2_type(LoadStoreNode, Node) \
+ declare_c2_type(StorePConditionalNode, LoadStoreNode) \
+ declare_c2_type(StoreLConditionalNode, LoadStoreNode) \
+ declare_c2_type(CompareAndSwapLNode, LoadStoreNode) \
+ declare_c2_type(CompareAndSwapINode, LoadStoreNode) \
+ declare_c2_type(CompareAndSwapPNode, LoadStoreNode) \
+ declare_c2_type(CompareAndSwapNNode, LoadStoreNode) \
+ declare_c2_type(PrefetchReadNode, Node) \
+ declare_c2_type(PrefetchWriteNode, Node) \
+ declare_c2_type(MulNode, Node) \
+ declare_c2_type(MulINode, MulNode) \
+ declare_c2_type(MulLNode, MulNode) \
+ declare_c2_type(MulFNode, MulNode) \
+ declare_c2_type(MulDNode, MulNode) \
+ declare_c2_type(MulHiLNode, Node) \
+ declare_c2_type(AndINode, MulINode) \
+ declare_c2_type(AndLNode, MulLNode) \
+ declare_c2_type(LShiftINode, Node) \
+ declare_c2_type(LShiftLNode, Node) \
+ declare_c2_type(RShiftINode, Node) \
+ declare_c2_type(RShiftLNode, Node) \
+ declare_c2_type(URShiftINode, Node) \
+ declare_c2_type(URShiftLNode, Node) \
+ declare_c2_type(MultiNode, Node) \
+ declare_c2_type(ProjNode, Node) \
+ declare_c2_type(TypeNode, Node) \
+ declare_c2_type(NodeHash, StackObj) \
+ declare_c2_type(RootNode, LoopNode) \
+ declare_c2_type(HaltNode, Node) \
+ declare_c2_type(SubNode, Node) \
+ declare_c2_type(SubINode, SubNode) \
+ declare_c2_type(SubLNode, SubNode) \
+ declare_c2_type(SubFPNode, SubNode) \
+ declare_c2_type(SubFNode, SubFPNode) \
+ declare_c2_type(SubDNode, SubFPNode) \
+ declare_c2_type(CmpNode, SubNode) \
+ declare_c2_type(CmpINode, CmpNode) \
+ declare_c2_type(CmpUNode, CmpNode) \
+ declare_c2_type(CmpPNode, CmpNode) \
+ declare_c2_type(CmpNNode, CmpNode) \
+ declare_c2_type(CmpLNode, CmpNode) \
+ declare_c2_type(CmpL3Node, CmpLNode) \
+ declare_c2_type(CmpFNode, CmpNode) \
+ declare_c2_type(CmpF3Node, CmpFNode) \
+ declare_c2_type(CmpDNode, CmpNode) \
+ declare_c2_type(CmpD3Node, CmpDNode) \
+ declare_c2_type(BoolNode, Node) \
+ declare_c2_type(AbsNode, Node) \
+ declare_c2_type(AbsINode, AbsNode) \
+ declare_c2_type(AbsFNode, AbsNode) \
+ declare_c2_type(AbsDNode, AbsNode) \
+ declare_c2_type(CmpLTMaskNode, Node) \
+ declare_c2_type(NegNode, Node) \
+ declare_c2_type(NegFNode, NegNode) \
+ declare_c2_type(NegDNode, NegNode) \
+ declare_c2_type(CosDNode, Node) \
+ declare_c2_type(SinDNode, Node) \
+ declare_c2_type(TanDNode, Node) \
+ declare_c2_type(AtanDNode, Node) \
+ declare_c2_type(SqrtDNode, Node) \
+ declare_c2_type(ExpDNode, Node) \
+ declare_c2_type(LogDNode, Node) \
+ declare_c2_type(Log10DNode, Node) \
+ declare_c2_type(PowDNode, Node) \
+ declare_c2_type(ReverseBytesINode, Node) \
+ declare_c2_type(ReverseBytesLNode, Node) \
+ declare_c2_type(VectorNode, Node) \
+ declare_c2_type(AddVBNode, VectorNode) \
+ declare_c2_type(AddVCNode, VectorNode) \
+ declare_c2_type(AddVSNode, VectorNode) \
+ declare_c2_type(AddVINode, VectorNode) \
+ declare_c2_type(AddVLNode, VectorNode) \
+ declare_c2_type(AddVFNode, VectorNode) \
+ declare_c2_type(AddVDNode, VectorNode) \
+ declare_c2_type(SubVBNode, VectorNode) \
+ declare_c2_type(SubVCNode, VectorNode) \
+ declare_c2_type(SubVSNode, VectorNode) \
+ declare_c2_type(SubVINode, VectorNode) \
+ declare_c2_type(SubVLNode, VectorNode) \
+ declare_c2_type(SubVFNode, VectorNode) \
+ declare_c2_type(SubVDNode, VectorNode) \
+ declare_c2_type(MulVFNode, VectorNode) \
+ declare_c2_type(MulVDNode, VectorNode) \
+ declare_c2_type(DivVFNode, VectorNode) \
+ declare_c2_type(DivVDNode, VectorNode) \
+ declare_c2_type(LShiftVBNode, VectorNode) \
+ declare_c2_type(LShiftVCNode, VectorNode) \
+ declare_c2_type(LShiftVSNode, VectorNode) \
+ declare_c2_type(LShiftVINode, VectorNode) \
+ declare_c2_type(URShiftVBNode, VectorNode) \
+ declare_c2_type(URShiftVCNode, VectorNode) \
+ declare_c2_type(URShiftVSNode, VectorNode) \
+ declare_c2_type(URShiftVINode, VectorNode) \
+ declare_c2_type(AndVNode, VectorNode) \
+ declare_c2_type(OrVNode, VectorNode) \
+ declare_c2_type(XorVNode, VectorNode) \
+ declare_c2_type(VectorLoadNode, LoadNode) \
+ declare_c2_type(Load16BNode, VectorLoadNode) \
+ declare_c2_type(Load8BNode, VectorLoadNode) \
+ declare_c2_type(Load4BNode, VectorLoadNode) \
+ declare_c2_type(Load8CNode, VectorLoadNode) \
+ declare_c2_type(Load4CNode, VectorLoadNode) \
+ declare_c2_type(Load2CNode, VectorLoadNode) \
+ declare_c2_type(Load8SNode, VectorLoadNode) \
+ declare_c2_type(Load4SNode, VectorLoadNode) \
+ declare_c2_type(Load2SNode, VectorLoadNode) \
+ declare_c2_type(Load4INode, VectorLoadNode) \
+ declare_c2_type(Load2INode, VectorLoadNode) \
+ declare_c2_type(Load2LNode, VectorLoadNode) \
+ declare_c2_type(Load4FNode, VectorLoadNode) \
+ declare_c2_type(Load2FNode, VectorLoadNode) \
+ declare_c2_type(Load2DNode, VectorLoadNode) \
+ declare_c2_type(VectorStoreNode, StoreNode) \
+ declare_c2_type(Store16BNode, VectorStoreNode) \
+ declare_c2_type(Store8BNode, VectorStoreNode) \
+ declare_c2_type(Store4BNode, VectorStoreNode) \
+ declare_c2_type(Store8CNode, VectorStoreNode) \
+ declare_c2_type(Store4CNode, VectorStoreNode) \
+ declare_c2_type(Store2CNode, VectorStoreNode) \
+ declare_c2_type(Store4INode, VectorStoreNode) \
+ declare_c2_type(Store2INode, VectorStoreNode) \
+ declare_c2_type(Store2LNode, VectorStoreNode) \
+ declare_c2_type(Store4FNode, VectorStoreNode) \
+ declare_c2_type(Store2FNode, VectorStoreNode) \
+ declare_c2_type(Store2DNode, VectorStoreNode) \
+ declare_c2_type(Replicate16BNode, VectorNode) \
+ declare_c2_type(Replicate8BNode, VectorNode) \
+ declare_c2_type(Replicate4BNode, VectorNode) \
+ declare_c2_type(Replicate8CNode, VectorNode) \
+ declare_c2_type(Replicate4CNode, VectorNode) \
+ declare_c2_type(Replicate2CNode, VectorNode) \
+ declare_c2_type(Replicate8SNode, VectorNode) \
+ declare_c2_type(Replicate4SNode, VectorNode) \
+ declare_c2_type(Replicate2SNode, VectorNode) \
+ declare_c2_type(Replicate4INode, VectorNode) \
+ declare_c2_type(Replicate2INode, VectorNode) \
+ declare_c2_type(Replicate2LNode, VectorNode) \
+ declare_c2_type(Replicate4FNode, VectorNode) \
+ declare_c2_type(Replicate2FNode, VectorNode) \
+ declare_c2_type(Replicate2DNode, VectorNode) \
+ declare_c2_type(PackNode, VectorNode) \
+ declare_c2_type(PackBNode, PackNode) \
+ declare_c2_type(PackCNode, PackNode) \
+ declare_c2_type(PackSNode, PackNode) \
+ declare_c2_type(PackINode, PackNode) \
+ declare_c2_type(PackLNode, PackNode) \
+ declare_c2_type(PackFNode, PackNode) \
+ declare_c2_type(PackDNode, PackNode) \
+ declare_c2_type(Pack2x1BNode, PackNode) \
+ declare_c2_type(Pack2x2BNode, PackNode) \
+ declare_c2_type(ExtractNode, Node) \
+ declare_c2_type(ExtractBNode, ExtractNode) \
+ declare_c2_type(ExtractCNode, ExtractNode) \
+ declare_c2_type(ExtractSNode, ExtractNode) \
+ declare_c2_type(ExtractINode, ExtractNode) \
+ declare_c2_type(ExtractLNode, ExtractNode) \
+ declare_c2_type(ExtractFNode, ExtractNode) \
+ declare_c2_type(ExtractDNode, ExtractNode) \
\
/*********************/ \
/* Adapter Blob Entries */ \
@@ -1402,6 +2026,32 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_toplevel_type(AdapterHandlerEntry) \
declare_toplevel_type(AdapterHandlerEntry*) \
\
+ /*********************/ \
+ /* CI */ \
+ /*********************/ \
+ declare_toplevel_type(ciEnv) \
+ declare_toplevel_type(ciObjectFactory) \
+ declare_toplevel_type(ciConstant) \
+ declare_toplevel_type(ciField) \
+ declare_toplevel_type(void*) \
+ declare_toplevel_type(ciObject) \
+ declare_type(ciMethod, ciObject) \
+ declare_type(ciMethodData, ciObject) \
+ declare_type(ciType, ciObject) \
+ declare_type(ciInstance, ciObject) \
+ declare_toplevel_type(ciSymbol) \
+ declare_type(ciKlass, ciType) \
+ declare_type(ciInstanceKlass, ciKlass) \
+ declare_type(ciArrayKlass, ciKlass) \
+ declare_type(ciTypeArrayKlass, ciArrayKlass) \
+ declare_type(ciObjArrayKlass, ciArrayKlass) \
+ declare_type(ciMethodKlass, ciKlass) \
+ declare_type(ciKlassKlass, ciKlass) \
+ declare_type(ciInstanceKlassKlass, ciKlassKlass) \
+ declare_type(ciArrayKlassKlass, ciKlassKlass) \
+ declare_type(ciTypeArrayKlassKlass, ciArrayKlassKlass) \
+ declare_type(ciObjArrayKlassKlass, ciArrayKlassKlass) \
+ \
/********************/ \
/* -XX flags */ \
/********************/ \
@@ -1410,6 +2060,12 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_toplevel_type(Flag*) \
\
/********************/ \
+ /* JVMTI */ \
+ /********************/ \
+ \
+ declare_toplevel_type(JvmtiExport) \
+ \
+ /********************/ \
/* JDK/VM version */ \
/********************/ \
\
@@ -1435,19 +2091,24 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_integer_type(Location::Type) \
declare_integer_type(Location::Where) \
declare_integer_type(PermGen::Name) \
+ declare_integer_type(FlagValueOrigin) \
+ COMPILER2_PRESENT(declare_integer_type(OptoReg::Name)) \
\
declare_integer_type(AccessFlags) /* FIXME: wrong type (not integer) */\
declare_toplevel_type(address) /* FIXME: should this be an integer type? */\
+ declare_integer_type(BasicType) /* FIXME: wrong type (not integer) */\
declare_toplevel_type(BreakpointInfo) \
declare_toplevel_type(BreakpointInfo*) \
declare_toplevel_type(CodeBlob*) \
declare_toplevel_type(CompressedWriteStream*) \
declare_toplevel_type(ConstantPoolCacheEntry) \
declare_toplevel_type(elapsedTimer) \
+ declare_toplevel_type(frame) \
declare_toplevel_type(intptr_t*) \
declare_unsigned_integer_type(InvocationCounter) /* FIXME: wrong type (not integer) */ \
declare_toplevel_type(JavaThread*) \
declare_toplevel_type(java_lang_Class) \
+ declare_integer_type(JavaThread::AsyncRequests) \
declare_toplevel_type(jbyte*) \
declare_toplevel_type(jbyte**) \
declare_toplevel_type(jint*) \
@@ -1460,6 +2121,7 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_toplevel_type(jmethodID*) \
declare_toplevel_type(Mutex*) \
declare_toplevel_type(nmethod*) \
+ COMPILER2_PRESENT(declare_unsigned_integer_type(node_idx_t)) \
declare_toplevel_type(ObjectMonitor*) \
declare_toplevel_type(oop*) \
declare_toplevel_type(OopMap**) \
@@ -1470,7 +2132,10 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_integer_type(ReferenceType) \
declare_toplevel_type(StubQueue*) \
declare_toplevel_type(Thread*) \
- declare_toplevel_type(Universe)
+ declare_toplevel_type(Universe) \
+ declare_toplevel_type(vframeArray) \
+ declare_toplevel_type(vframeArrayElement)
+
/* NOTE that we do not use the last_entry() macro here; it is used */
/* in vmStructs_<os>_<cpu>.hpp's VM_TYPES_OS_CPU macro (and must be */
@@ -1775,6 +2440,27 @@ static inline uint64_t cast_uint64_t(size_t x)
declare_constant(Location::on_stack) \
declare_constant(Location::in_register) \
\
+ declare_constant(Deoptimization::Reason_many) \
+ declare_constant(Deoptimization::Reason_none) \
+ declare_constant(Deoptimization::Reason_null_check) \
+ declare_constant(Deoptimization::Reason_null_assert) \
+ declare_constant(Deoptimization::Reason_range_check) \
+ declare_constant(Deoptimization::Reason_class_check) \
+ declare_constant(Deoptimization::Reason_array_check) \
+ declare_constant(Deoptimization::Reason_intrinsic) \
+ declare_constant(Deoptimization::Reason_bimorphic) \
+ declare_constant(Deoptimization::Reason_unloaded) \
+ declare_constant(Deoptimization::Reason_uninitialized) \
+ declare_constant(Deoptimization::Reason_unreached) \
+ declare_constant(Deoptimization::Reason_unhandled) \
+ declare_constant(Deoptimization::Reason_constraint) \
+ declare_constant(Deoptimization::Reason_div0_check) \
+ declare_constant(Deoptimization::Reason_age) \
+ declare_constant(Deoptimization::Reason_predicate) \
+ declare_constant(Deoptimization::Reason_loop_limit_check) \
+ declare_constant(Deoptimization::Reason_LIMIT) \
+ declare_constant(Deoptimization::Reason_RECORDED_LIMIT) \
+ \
/*********************/ \
/* Matcher (C2 only) */ \
/*********************/ \
@@ -2478,12 +3164,14 @@ static int recursiveFindType(VMTypeEntry* origtypes, const char* typeName, bool
{
VMTypeEntry* types = origtypes;
while (types->typeName != NULL) {
- if (!strcmp(typeName, types->typeName)) {
+ if (strcmp(typeName, types->typeName) == 0) {
+ // Found it
return 1;
}
++types;
}
}
+ // Search for the base type by peeling off const and *
size_t len = strlen(typeName);
if (typeName[len-1] == '*') {
char * s = new char[len];
diff --git a/src/share/vm/utilities/exceptions.hpp b/src/share/vm/utilities/exceptions.hpp
index 52540f31f..f4ad5dd1c 100644
--- a/src/share/vm/utilities/exceptions.hpp
+++ b/src/share/vm/utilities/exceptions.hpp
@@ -58,6 +58,8 @@ class JavaCallArguments;
// include hierachy reasons).
class ThreadShadow: public CHeapObj {
+ friend class VMStructs;
+
protected:
oop _pending_exception; // Thread has gc actions.
const char* _exception_file; // file information for exception (debugging only)
diff --git a/src/share/vm/utilities/growableArray.hpp b/src/share/vm/utilities/growableArray.hpp
index 9ee963941..34972be8d 100644
--- a/src/share/vm/utilities/growableArray.hpp
+++ b/src/share/vm/utilities/growableArray.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -77,6 +77,8 @@ extern "C" {
}
class GenericGrowableArray : public ResourceObj {
+ friend class VMStructs;
+
protected:
int _len; // current length
int _max; // maximum length
@@ -136,6 +138,8 @@ class GenericGrowableArray : public ResourceObj {
};
template<class E> class GrowableArray : public GenericGrowableArray {
+ friend class VMStructs;
+
private:
E* _data; // data array