diff agent/src/share/classes/sun/jvm/hotspot/runtime/CompilerThread.java @ 3939:f6f3bb0ee072

7088955: add C2 IR support to the SA Reviewed-by: kvn
author never
date Sun, 11 Sep 2011 14:48:24 -0700
parents c18cbe5936b8
children
line wrap: on
line diff
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/CompilerThread.java	Sat Sep 10 17:29:02 2011 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/CompilerThread.java	Sun Sep 11 14:48:24 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2003, 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
@@ -25,10 +25,40 @@
 package sun.jvm.hotspot.runtime;
 
 import java.io.*;
+import java.util.*;
 import sun.jvm.hotspot.debugger.*;
 import sun.jvm.hotspot.types.*;
+import sun.jvm.hotspot.ci.*;
 
 public class CompilerThread extends JavaThread {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+        public void update(Observable o, Object data) {
+          initialize(VM.getVM().getTypeDataBase());
+        }
+      });
+  }
+
+  private static AddressField _env_field;
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    Type type      = db.lookupType("CompilerThread");
+
+    _env_field = type.getAddressField("_env");
+  }
+
+  private ciEnv _env;
+
+  public synchronized ciEnv env() {
+    if (_env == null) {
+      Address v = _env_field.getValue(this.getAddress());
+      if (v != null) {
+        _env = new ciEnv(v);
+      }
+    }
+    return _env;
+  }
+
   public CompilerThread(Address addr) {
     super(addr);
   }