--- old/agent/src/share/classes/sun/jvm/hotspot/runtime/CompilerThread.java Fri Sep 9 14:15:58 2011 +++ new/agent/src/share/classes/sun/jvm/hotspot/runtime/CompilerThread.java Fri Sep 9 14:15:58 2011 @@ -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); }