From 9535cad412f3f2b8e24f4270368d577e101da523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Tue, 5 Apr 2016 22:23:49 +0200 Subject: [PATCH] Made max mem configurable. --- src/main/resources/application.conf | 8 ++++++++ src/main/scala/li/cil/oc/Settings.scala | 1 + .../oc/server/machine/luac/NativeLuaArchitecture.scala | 2 +- .../cil/oc/server/machine/luaj/LuaJLuaArchitecture.scala | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/resources/application.conf b/src/main/resources/application.conf index 974b07302..c0f9ceeb8 100644 --- a/src/main/resources/application.conf +++ b/src/main/resources/application.conf @@ -254,6 +254,14 @@ opencomputers { # scaled up to 96KB, `computer.totalMemory` will return 64KB, and if there # are really 45KB free, `computer.freeMemory` will return 32KB. ramScaleFor64Bit: 1.8 + + # The total maximum amount of memory a Lua machine may use for user + # programs. The total amount made available by components cannot + # exceed this. The default is 64*1024*1024. Keep in mind that this does + # not include memory reserved for built-in code such as `machine.lua`. + # IMPORTANT: DO NOT MESS WITH THIS UNLESS YOU KNOW WHAT YOU'RE DOING. + # IN PARTICULAR, DO NOT REPORT ISSUES AFTER MESSING WITH THIS! + maxTotalRam: 67108864 } } diff --git a/src/main/scala/li/cil/oc/Settings.scala b/src/main/scala/li/cil/oc/Settings.scala index 8f0224742..f9ca26017 100644 --- a/src/main/scala/li/cil/oc/Settings.scala +++ b/src/main/scala/li/cil/oc/Settings.scala @@ -86,6 +86,7 @@ class Settings(val config: Config) { Array(192, 256, 384, 512, 768, 1024) } val ramScaleFor64Bit = config.getDouble("computer.lua.ramScaleFor64Bit") max 1 + val maxTotalRam = config.getInt("computer.lua.maxTotalRam") max 0 // ----------------------------------------------------------------------- // // robot diff --git a/src/main/scala/li/cil/oc/server/machine/luac/NativeLuaArchitecture.scala b/src/main/scala/li/cil/oc/server/machine/luac/NativeLuaArchitecture.scala index 2bfe7bd24..f87d313d1 100644 --- a/src/main/scala/li/cil/oc/server/machine/luac/NativeLuaArchitecture.scala +++ b/src/main/scala/li/cil/oc/server/machine/luac/NativeLuaArchitecture.scala @@ -160,7 +160,7 @@ abstract class NativeLuaArchitecture(val machine: api.machine.Machine) extends A private def memoryInBytes(components: java.lang.Iterable[ItemStack]) = components.foldLeft(0.0)((acc, stack) => acc + (Option(api.Driver.driverFor(stack)) match { case Some(driver: Memory) => driver.amount(stack) * 1024 case _ => 0 - })).toInt max 0 min 50000000 + })).toInt max 0 min Settings.get.maxTotalRam // ----------------------------------------------------------------------- // diff --git a/src/main/scala/li/cil/oc/server/machine/luaj/LuaJLuaArchitecture.scala b/src/main/scala/li/cil/oc/server/machine/luaj/LuaJLuaArchitecture.scala index 2b05fa439..024c2fc40 100644 --- a/src/main/scala/li/cil/oc/server/machine/luaj/LuaJLuaArchitecture.scala +++ b/src/main/scala/li/cil/oc/server/machine/luaj/LuaJLuaArchitecture.scala @@ -105,7 +105,7 @@ class LuaJLuaArchitecture(val machine: api.machine.Machine) extends Architecture private def memoryInBytes(components: java.lang.Iterable[ItemStack]) = components.foldLeft(0.0)((acc, stack) => acc + (Option(api.Driver.driverFor(stack)) match { case Some(driver: Memory) => driver.amount(stack) * 1024 case _ => 0 - })).toInt max 0 min 50000000 + })).toInt max 0 min Settings.get.maxTotalRam // ----------------------------------------------------------------------- //