Mercurial > hg > icedrobot > daneel
changeset 131:b982ddbda513
Add service provider interfaces for dalvik.
author | Mario Torre <neugens.limasoftware@gmail.com> |
---|---|
date | Fri, 15 Apr 2011 22:35:39 +0200 |
parents | b4e063a46401 |
children | cc0033e43d33 |
files | src/main/java/org/icedrobot/daneel/spi/dalvik/system/DaneelLoggerSPI.java src/main/java/org/icedrobot/daneel/spi/dalvik/system/DaneelSPIFactory.java src/main/java/org/icedrobot/daneel/spi/dalvik/system/DaneelSystemPropertiesSPI.java src/main/java/org/icedrobot/daneel/spi/dalvik/system/DaneelVMRuntime.java src/main/java/org/icedrobot/daneel/spi/dalvik/system/LoggerSPI.java src/main/java/org/icedrobot/daneel/spi/dalvik/system/SPIFactory.java src/main/java/org/icedrobot/daneel/spi/dalvik/system/SystemPropertiesSPI.java src/main/java/org/icedrobot/daneel/spi/dalvik/system/VMRuntimeSPI.java |
diffstat | 8 files changed, 481 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/icedrobot/daneel/spi/dalvik/system/DaneelLoggerSPI.java Fri Apr 15 22:35:39 2011 +0200 @@ -0,0 +1,58 @@ +/* + * Daneel - Dalvik to Java bytecode compiler + * Copyright (C) 2011 IcedRobot team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * This file is subject to the "Classpath" exception: + * + * Linking this library statically or dynamically with other modules is + * making a combined work based on this library. Thus, the terms and + * conditions of the GNU General Public License cover the whole + * combination. + * + * As a special exception, the copyright holders of this library give you + * permission to link this library with independent modules to produce an + * executable, regardless of the license terms of these independent + * modules, and to copy and distribute the resulting executable under terms + * of your choice, provided that you also meet, for each linked independent + * module, the terms and conditions of the license of that module. An + * independent module is a module which is not derived from or based on + * this library. If you modify this library, you may extend this exception + * to your version of the library, but you are not obligated to do so. If + * you do not wish to do so, delete this exception statement from your + * version. + */ + +package org.icedrobot.daneel.spi.dalvik.system; + +import java.util.logging.Level; +import java.util.logging.Logger; + +class DaneelLoggerSPI implements LoggerSPI { + + public DaneelLoggerSPI() { + } + + @Override + public int println(int bufID, int priority, String tag, String msg) { + Logger.getLogger(tag).log(Level.ALL, msg); + return msg.length(); + } + + @Override + public boolean isLoggable(String tag, int level) { + return true; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/icedrobot/daneel/spi/dalvik/system/DaneelSPIFactory.java Fri Apr 15 22:35:39 2011 +0200 @@ -0,0 +1,62 @@ +/* + * Daneel - Dalvik to Java bytecode compiler + * Copyright (C) 2011 IcedRobot team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * This file is subject to the "Classpath" exception: + * + * Linking this library statically or dynamically with other modules is + * making a combined work based on this library. Thus, the terms and + * conditions of the GNU General Public License cover the whole + * combination. + * + * As a special exception, the copyright holders of this library give you + * permission to link this library with independent modules to produce an + * executable, regardless of the license terms of these independent + * modules, and to copy and distribute the resulting executable under terms + * of your choice, provided that you also meet, for each linked independent + * module, the terms and conditions of the license of that module. An + * independent module is a module which is not derived from or based on + * this library. If you modify this library, you may extend this exception + * to your version of the library, but you are not obligated to do so. If + * you do not wish to do so, delete this exception statement from your + * version. + */ + +package org.icedrobot.daneel.spi.dalvik.system; + +/** + */ +class DaneelSPIFactory extends SPIFactory { + + public DaneelSPIFactory() { + } + + @Override + public VMRuntimeSPI createVMRuntimeSPI() { + return new DaneelVMRuntime(); + } + + @Override + public LoggerSPI createLoggerSPI() { + return new DaneelLoggerSPI(); + } + + @Override + public SystemPropertiesSPI createSystemPropertiesSPI() { + return new DaneelSystemPropertiesSPI(); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/icedrobot/daneel/spi/dalvik/system/DaneelSystemPropertiesSPI.java Fri Apr 15 22:35:39 2011 +0200 @@ -0,0 +1,46 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.icedrobot.daneel.spi.dalvik.system; + +/** + * + * @author neugens + */ +class DaneelSystemPropertiesSPI implements SystemPropertiesSPI { + + public DaneelSystemPropertiesSPI() { + } + + @Override + public String getProperty(String key) { + return System.getProperty(key); + } + + @Override + public String getProperty(String key, String def) { + return System.getProperty(key, def); + } + + @Override + public int getInteger(String key, int def) { + return Integer.getInteger(key, def); + } + + @Override + public long getLong(String key, long def) { + return Long.getLong(key, def); + } + + @Override + public boolean getBoolean(String key, boolean def) { + return Boolean.getBoolean(key); + } + + @Override + public void setProperty(String key, String def) { + System.setProperty(key, def); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/icedrobot/daneel/spi/dalvik/system/DaneelVMRuntime.java Fri Apr 15 22:35:39 2011 +0200 @@ -0,0 +1,95 @@ +/* + * Daneel - Dalvik to Java bytecode compiler + * Copyright (C) 2011 IcedRobot team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * This file is subject to the "Classpath" exception: + * + * Linking this library statically or dynamically with other modules is + * making a combined work based on this library. Thus, the terms and + * conditions of the GNU General Public License cover the whole + * combination. + * + * As a special exception, the copyright holders of this library give you + * permission to link this library with independent modules to produce an + * executable, regardless of the license terms of these independent + * modules, and to copy and distribute the resulting executable under terms + * of your choice, provided that you also meet, for each linked independent + * module, the terms and conditions of the license of that module. An + * independent module is a module which is not derived from or based on + * this library. If you modify this library, you may extend this exception + * to your version of the library, but you are not obligated to do so. If + * you do not wish to do so, delete this exception statement from your + * version. + */ + +package org.icedrobot.daneel.spi.dalvik.system; + +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + */ +class DaneelVMRuntime implements VMRuntimeSPI { + + @Override + public float getTargetHeapUtilization() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void gcSoftReferences() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void runFinalizationSync() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void setTargetHeapUtilization(float newTarget) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public boolean trackExternalAllocation(long size) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void startJitCompilation() { + /* no op */ + } + + @Override + public void disableJitCompilation() { + /* no op */ + } + + @Override + public void setMinimumHeapSize(long size) { + /* no op */ + Logger.getLogger(DaneelVMRuntime.class.getName()). + log(Level.ALL, "setMinimumHeapSize: {0}", size); + } + + @Override + public long getMinimumHeapSize() { + long heapSize = Runtime.getRuntime().totalMemory(); + return heapSize; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/icedrobot/daneel/spi/dalvik/system/LoggerSPI.java Fri Apr 15 22:35:39 2011 +0200 @@ -0,0 +1,51 @@ +/* + * Daneel - Dalvik to Java bytecode compiler + * Copyright (C) 2011 IcedRobot team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * This file is subject to the "Classpath" exception: + * + * Linking this library statically or dynamically with other modules is + * making a combined work based on this library. Thus, the terms and + * conditions of the GNU General Public License cover the whole + * combination. + * + * As a special exception, the copyright holders of this library give you + * permission to link this library with independent modules to produce an + * executable, regardless of the license terms of these independent + * modules, and to copy and distribute the resulting executable under terms + * of your choice, provided that you also meet, for each linked independent + * module, the terms and conditions of the license of that module. An + * independent module is a module which is not derived from or based on + * this library. If you modify this library, you may extend this exception + * to your version of the library, but you are not obligated to do so. If + * you do not wish to do so, delete this exception statement from your + * version. + */ + +package org.icedrobot.daneel.spi.dalvik.system; + +public interface LoggerSPI { + + public static final int VERBOSE = 2; + public static final int DEBUG = 3; + public static final int INFO = 4; + public static final int WARN = 5; + public static final int ERROR = 6; + public static final int ASSERT = 7; + + int println(int bufID, int priority, String tag, String msg); + boolean isLoggable(String tag, int level); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/icedrobot/daneel/spi/dalvik/system/SPIFactory.java Fri Apr 15 22:35:39 2011 +0200 @@ -0,0 +1,65 @@ +/* + * Daneel - Dalvik to Java bytecode compiler + * Copyright (C) 2011 IcedRobot team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * This file is subject to the "Classpath" exception: + * + * Linking this library statically or dynamically with other modules is + * making a combined work based on this library. Thus, the terms and + * conditions of the GNU General Public License cover the whole + * combination. + * + * As a special exception, the copyright holders of this library give you + * permission to link this library with independent modules to produce an + * executable, regardless of the license terms of these independent + * modules, and to copy and distribute the resulting executable under terms + * of your choice, provided that you also meet, for each linked independent + * module, the terms and conditions of the license of that module. An + * independent module is a module which is not derived from or based on + * this library. If you modify this library, you may extend this exception + * to your version of the library, but you are not obligated to do so. If + * you do not wish to do so, delete this exception statement from your + * version. + */ + +package org.icedrobot.daneel.spi.dalvik.system; + +import org.icedrobot.daneel.DaneelException; + +/** + */ +public abstract class SPIFactory { + + /** + * + */ + public static SPIFactory getInstance() { + + String spiFactoryName = System.getProperty("icedrobot.factory.spi", + "org.icedrobot.daneel.spi.dalvik.system.DaneelSPIFactory"); + try { + Class<?> factoryClass = Class.forName(spiFactoryName); + return (SPIFactory) factoryClass.newInstance(); + + } catch (Exception ex) { + throw new DaneelException(ex); + } + } + + public abstract LoggerSPI createLoggerSPI(); + public abstract VMRuntimeSPI createVMRuntimeSPI(); + public abstract SystemPropertiesSPI createSystemPropertiesSPI(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/icedrobot/daneel/spi/dalvik/system/SystemPropertiesSPI.java Fri Apr 15 22:35:39 2011 +0200 @@ -0,0 +1,47 @@ +/* + * Daneel - Dalvik to Java bytecode compiler + * Copyright (C) 2011 IcedRobot team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * This file is subject to the "Classpath" exception: + * + * Linking this library statically or dynamically with other modules is + * making a combined work based on this library. Thus, the terms and + * conditions of the GNU General Public License cover the whole + * combination. + * + * As a special exception, the copyright holders of this library give you + * permission to link this library with independent modules to produce an + * executable, regardless of the license terms of these independent + * modules, and to copy and distribute the resulting executable under terms + * of your choice, provided that you also meet, for each linked independent + * module, the terms and conditions of the license of that module. An + * independent module is a module which is not derived from or based on + * this library. If you modify this library, you may extend this exception + * to your version of the library, but you are not obligated to do so. If + * you do not wish to do so, delete this exception statement from your + * version. + */ +package org.icedrobot.daneel.spi.dalvik.system; + +public interface SystemPropertiesSPI { + + String getProperty(String key); + String getProperty(String key, String def); + int getInteger(String key, int def); + long getLong(String key, long def); + boolean getBoolean(String key, boolean def); + void setProperty(String key, String def); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/icedrobot/daneel/spi/dalvik/system/VMRuntimeSPI.java Fri Apr 15 22:35:39 2011 +0200 @@ -0,0 +1,57 @@ +/* + * Daneel - Dalvik to Java bytecode compiler + * Copyright (C) 2011 IcedRobot team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * This file is subject to the "Classpath" exception: + * + * Linking this library statically or dynamically with other modules is + * making a combined work based on this library. Thus, the terms and + * conditions of the GNU General Public License cover the whole + * combination. + * + * As a special exception, the copyright holders of this library give you + * permission to link this library with independent modules to produce an + * executable, regardless of the license terms of these independent + * modules, and to copy and distribute the resulting executable under terms + * of your choice, provided that you also meet, for each linked independent + * module, the terms and conditions of the license of that module. An + * independent module is a module which is not derived from or based on + * this library. If you modify this library, you may extend this exception + * to your version of the library, but you are not obligated to do so. If + * you do not wish to do so, delete this exception statement from your + * version. + */ + +package org.icedrobot.daneel.spi.dalvik.system; + +/** + * Common interface for Android VMRuntime implementations. + */ +public interface VMRuntimeSPI { + + float getTargetHeapUtilization(); + + void setMinimumHeapSize(long size); + long getMinimumHeapSize(); + + void gcSoftReferences(); + void runFinalizationSync(); + void setTargetHeapUtilization(float newTarget); + + boolean trackExternalAllocation(long size); + void startJitCompilation(); + void disableJitCompilation(); +}