agent/src/share/classes/sun/jvm/hotspot/runtime/CompilerThread.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** 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,7 **** --- 1,7 ---- /* ! * 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 23,36 **** --- 23,66 ---- */ 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); } public boolean isJavaThread() { return false; }

agent/src/share/classes/sun/jvm/hotspot/runtime/CompilerThread.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File