Mercurial > hg > graal-jvmci-8
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); }