aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs39
1 files changed, 20 insertions, 19 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs b/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs
index f874de2..98658b6 100644
--- a/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs
@@ -284,12 +284,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
284 return GetCompilerOutput(assetID.ToString()); 284 return GetCompilerOutput(assetID.ToString());
285 } 285 }
286 286
287 /// <summary> 287 public void PerformScriptCompile(
288 /// Converts script from LSL to CS and calls CompileFromCSText 288 string source, string asset, UUID ownerUUID,
289 /// </summary> 289 out string assembly, out Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> linemap)
290 /// <param name="Script">LSL script</param> 290 {
291 /// <returns>Filename to .dll assembly</returns> 291 PerformScriptCompile(source, asset, ownerUUID, false, out assembly, out linemap);
292 public void PerformScriptCompile(string Script, string asset, UUID ownerUUID, 292 }
293
294 public void PerformScriptCompile(
295 string source, string asset, UUID ownerUUID, bool alwaysRecompile,
293 out string assembly, out Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> linemap) 296 out string assembly, out Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> linemap)
294 { 297 {
295// m_log.DebugFormat("[Compiler]: Compiling script\n{0}", Script); 298// m_log.DebugFormat("[Compiler]: Compiling script\n{0}", Script);
@@ -303,9 +306,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
303 306
304 CheckOrCreateScriptsDirectory(); 307 CheckOrCreateScriptsDirectory();
305 308
306 // Don't recompile if we already have it 309 // Don't recompile if we're not forced to and we already have it
307 // Performing 3 file exists tests for every script can still be slow 310 // Performing 3 file exists tests for every script can still be slow
308 if (File.Exists(assembly) && File.Exists(assembly + ".text") && File.Exists(assembly + ".map")) 311 if (!alwaysRecompile && File.Exists(assembly) && File.Exists(assembly + ".text") && File.Exists(assembly + ".map"))
309 { 312 {
310 // If we have already read this linemap file, then it will be in our dictionary. 313 // If we have already read this linemap file, then it will be in our dictionary.
311 // Don't build another copy of the dictionary (saves memory) and certainly 314 // Don't build another copy of the dictionary (saves memory) and certainly
@@ -316,29 +319,27 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
316 return; 319 return;
317 } 320 }
318 321
319 if (Script == String.Empty) 322 if (source == String.Empty)
320 {
321 throw new Exception("Cannot find script assembly and no script text present"); 323 throw new Exception("Cannot find script assembly and no script text present");
322 }
323 324
324 enumCompileType language = DefaultCompileLanguage; 325 enumCompileType language = DefaultCompileLanguage;
325 326
326 if (Script.StartsWith("//c#", true, CultureInfo.InvariantCulture)) 327 if (source.StartsWith("//c#", true, CultureInfo.InvariantCulture))
327 language = enumCompileType.cs; 328 language = enumCompileType.cs;
328 if (Script.StartsWith("//vb", true, CultureInfo.InvariantCulture)) 329 if (source.StartsWith("//vb", true, CultureInfo.InvariantCulture))
329 { 330 {
330 language = enumCompileType.vb; 331 language = enumCompileType.vb;
331 // We need to remove //vb, it won't compile with that 332 // We need to remove //vb, it won't compile with that
332 333
333 Script = Script.Substring(4, Script.Length - 4); 334 source = source.Substring(4, source.Length - 4);
334 } 335 }
335 if (Script.StartsWith("//lsl", true, CultureInfo.InvariantCulture)) 336 if (source.StartsWith("//lsl", true, CultureInfo.InvariantCulture))
336 language = enumCompileType.lsl; 337 language = enumCompileType.lsl;
337 338
338 if (Script.StartsWith("//js", true, CultureInfo.InvariantCulture)) 339 if (source.StartsWith("//js", true, CultureInfo.InvariantCulture))
339 language = enumCompileType.js; 340 language = enumCompileType.js;
340 341
341 if (Script.StartsWith("//yp", true, CultureInfo.InvariantCulture)) 342 if (source.StartsWith("//yp", true, CultureInfo.InvariantCulture))
342 language = enumCompileType.yp; 343 language = enumCompileType.yp;
343 344
344// m_log.DebugFormat("[Compiler]: Compile language is {0}", language); 345// m_log.DebugFormat("[Compiler]: Compile language is {0}", language);
@@ -359,13 +360,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
359 throw new Exception(errtext); 360 throw new Exception(errtext);
360 } 361 }
361 362
362 string compileScript = Script; 363 string compileScript = source;
363 364
364 if (language == enumCompileType.lsl) 365 if (language == enumCompileType.lsl)
365 { 366 {
366 // Its LSL, convert it to C# 367 // Its LSL, convert it to C#
367 LSL_Converter = (ICodeConverter)new CSCodeGenerator(comms, m_insertCoopTerminationCalls); 368 LSL_Converter = (ICodeConverter)new CSCodeGenerator(comms, m_insertCoopTerminationCalls);
368 compileScript = LSL_Converter.Convert(Script); 369 compileScript = LSL_Converter.Convert(source);
369 370
370 // copy converter warnings into our warnings. 371 // copy converter warnings into our warnings.
371 foreach (string warning in LSL_Converter.GetWarnings()) 372 foreach (string warning in LSL_Converter.GetWarnings())