mirror of https://github.com/opensim/opensim.git
more cosmetics
This commit is contained in:
parent
3011368fd0
commit
eea5d14ec6
|
@ -4604,7 +4604,7 @@ Label_GroupsDone:
|
|||
sp.Name, sp.UUID, Name);
|
||||
return false;
|
||||
}
|
||||
if (cAgentData.SessionID != sp.ControllingClient.SessionId)
|
||||
if (cAgentData.SessionID.NotEqual(sp.ControllingClient.SessionId))
|
||||
{
|
||||
m_log.WarnFormat(
|
||||
"[SCENE]: Attempt to update agent {0} with diferent session id {1} != {2}",
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -88,56 +88,57 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
*/
|
||||
private static Dictionary<Type, int> PrecedenceInit()
|
||||
{
|
||||
Dictionary<Type, int> p = new Dictionary<Type, int>();
|
||||
Dictionary<Type, int> p = new Dictionary<Type, int>
|
||||
{
|
||||
// http://www.lslwiki.net/lslwiki/wakka.php?wakka=operators
|
||||
|
||||
// http://www.lslwiki.net/lslwiki/wakka.php?wakka=operators
|
||||
{ typeof(TokenKwComma), 30 },
|
||||
|
||||
p.Add(typeof(TokenKwComma), 30);
|
||||
{ typeof(TokenKwAsnLSh), ASNPR }, // all assignment operators of equal precedence
|
||||
{ typeof(TokenKwAsnRSh), ASNPR }, // ... so they get processed strictly right-to-left
|
||||
{ typeof(TokenKwAsnAdd), ASNPR },
|
||||
{ typeof(TokenKwAsnAnd), ASNPR },
|
||||
{ typeof(TokenKwAsnSub), ASNPR },
|
||||
{ typeof(TokenKwAsnMul), ASNPR },
|
||||
{ typeof(TokenKwAsnDiv), ASNPR },
|
||||
{ typeof(TokenKwAsnMod), ASNPR },
|
||||
{ typeof(TokenKwAsnOr), ASNPR },
|
||||
{ typeof(TokenKwAsnXor), ASNPR },
|
||||
{ typeof(TokenKwAssign), ASNPR },
|
||||
|
||||
p.Add(typeof(TokenKwAsnLSh), ASNPR); // all assignment operators of equal precedence
|
||||
p.Add(typeof(TokenKwAsnRSh), ASNPR); // ... so they get processed strictly right-to-left
|
||||
p.Add(typeof(TokenKwAsnAdd), ASNPR);
|
||||
p.Add(typeof(TokenKwAsnAnd), ASNPR);
|
||||
p.Add(typeof(TokenKwAsnSub), ASNPR);
|
||||
p.Add(typeof(TokenKwAsnMul), ASNPR);
|
||||
p.Add(typeof(TokenKwAsnDiv), ASNPR);
|
||||
p.Add(typeof(TokenKwAsnMod), ASNPR);
|
||||
p.Add(typeof(TokenKwAsnOr), ASNPR);
|
||||
p.Add(typeof(TokenKwAsnXor), ASNPR);
|
||||
p.Add(typeof(TokenKwAssign), ASNPR);
|
||||
{ typeof(TokenKwQMark), 60 },
|
||||
|
||||
p.Add(typeof(TokenKwQMark), 60);
|
||||
{ typeof(TokenKwOrOrOr), 70 },
|
||||
{ typeof(TokenKwAndAndAnd), 80 },
|
||||
|
||||
p.Add(typeof(TokenKwOrOrOr), 70);
|
||||
p.Add(typeof(TokenKwAndAndAnd), 80);
|
||||
{ typeof(TokenKwOrOr), 100 },
|
||||
|
||||
p.Add(typeof(TokenKwOrOr), 100);
|
||||
{ typeof(TokenKwAndAnd), 120 },
|
||||
|
||||
p.Add(typeof(TokenKwAndAnd), 120);
|
||||
{ typeof(TokenKwOr), 140 },
|
||||
|
||||
p.Add(typeof(TokenKwOr), 140);
|
||||
{ typeof(TokenKwXor), 160 },
|
||||
|
||||
p.Add(typeof(TokenKwXor), 160);
|
||||
{ typeof(TokenKwAnd), 180 },
|
||||
|
||||
p.Add(typeof(TokenKwAnd), 180);
|
||||
{ typeof(TokenKwCmpEQ), 200 },
|
||||
{ typeof(TokenKwCmpNE), 200 },
|
||||
|
||||
p.Add(typeof(TokenKwCmpEQ), 200);
|
||||
p.Add(typeof(TokenKwCmpNE), 200);
|
||||
{ typeof(TokenKwCmpLT), 240 },
|
||||
{ typeof(TokenKwCmpLE), 240 },
|
||||
{ typeof(TokenKwCmpGT), 240 },
|
||||
{ typeof(TokenKwCmpGE), 240 },
|
||||
|
||||
p.Add(typeof(TokenKwCmpLT), 240);
|
||||
p.Add(typeof(TokenKwCmpLE), 240);
|
||||
p.Add(typeof(TokenKwCmpGT), 240);
|
||||
p.Add(typeof(TokenKwCmpGE), 240);
|
||||
{ typeof(TokenKwRSh), 260 },
|
||||
{ typeof(TokenKwLSh), 260 },
|
||||
|
||||
p.Add(typeof(TokenKwRSh), 260);
|
||||
p.Add(typeof(TokenKwLSh), 260);
|
||||
{ typeof(TokenKwAdd), 280 },
|
||||
{ typeof(TokenKwSub), 280 },
|
||||
|
||||
p.Add(typeof(TokenKwAdd), 280);
|
||||
p.Add(typeof(TokenKwSub), 280);
|
||||
|
||||
p.Add(typeof(TokenKwMul), 320);
|
||||
p.Add(typeof(TokenKwDiv), 320);
|
||||
p.Add(typeof(TokenKwMod), 320);
|
||||
{ typeof(TokenKwMul), 320 },
|
||||
{ typeof(TokenKwDiv), 320 },
|
||||
{ typeof(TokenKwMod), 320 }
|
||||
};
|
||||
|
||||
return p;
|
||||
}
|
||||
|
@ -713,17 +714,15 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
public Token CatalogSDTypeDecl(TokenDeclSDType decl)
|
||||
{
|
||||
string longName = decl.longName.val;
|
||||
TokenDeclSDType dupDecl;
|
||||
if(!tokenScript.sdSrcTypesTryGetValue(longName, out dupDecl))
|
||||
if (!tokenScript.sdSrcTypesTryGetValue(longName, out TokenDeclSDType dupDecl))
|
||||
{
|
||||
tokenScript.sdSrcTypesAdd(longName, decl);
|
||||
if(decl.outerSDType != null)
|
||||
decl.outerSDType.innerSDTypes.Add(decl.shortName.val, decl);
|
||||
decl.outerSDType?.innerSDTypes.Add(decl.shortName.val, decl);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
if(!dupDecl.isPartial || !decl.isPartial)
|
||||
if (!dupDecl.isPartial || !decl.isPartial)
|
||||
{
|
||||
ErrorMsg(decl, "duplicate definition of type " + longName);
|
||||
ErrorMsg(dupDecl, "previous definition here");
|
||||
|
@ -3649,7 +3648,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
condExpr.falseExpr = ParseRVal(ref token, termTokenTypes);
|
||||
condExpr.prevToken = operands.prevToken;
|
||||
operands = condExpr;
|
||||
termTokenTypes = new Type[0];
|
||||
termTokenTypes = Array.Empty<Type>();
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
@ -4458,15 +4457,14 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
// Splice instantiation (instdecl) in just before the beginning token of prototype (this.begToken).
|
||||
SpliceSourceToken(instdecl);
|
||||
|
||||
// Now for the fun part... Copy the rest of the prototype body to the
|
||||
// instantiated body, replacing all generic parameter type tokens with
|
||||
// the corresponding generic argument types. Note that the parameters
|
||||
// are numbered starting with the outermost so we need the full genArgs
|
||||
// array. Eg if we are doing 'Converter<V=float>' from
|
||||
// 'Dictionary<T=string,U=integer>.Converter<V=float>', any V's are
|
||||
// numbered [2]. Any [0]s or [1]s should be gone by now but it doesn't
|
||||
// matter.
|
||||
int index;
|
||||
// Now for the fun part... Copy the rest of the prototype body to the
|
||||
// instantiated body, replacing all generic parameter type tokens with
|
||||
// the corresponding generic argument types. Note that the parameters
|
||||
// are numbered starting with the outermost so we need the full genArgs
|
||||
// array. Eg if we are doing 'Converter<V=float>' from
|
||||
// 'Dictionary<T=string,U=integer>.Converter<V=float>', any V's are
|
||||
// numbered [2]. Any [0]s or [1]s should be gone by now but it doesn't
|
||||
// matter.
|
||||
Token it, pt;
|
||||
TokenDeclSDType innerProto = this;
|
||||
TokenDeclSDType innerInst = instdecl;
|
||||
|
@ -4479,10 +4477,9 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
// if generic, eg doing Converter<W> of Dictionary<T,U>.Converter<W>, we have to manually copy the W as well.
|
||||
// 2) outerSDType is transformed from Dictionary<T,U> to Dictionary<string,integer>.
|
||||
// 3) innerSDTypes is rebuilt when/if we find classes that are inner to this one.
|
||||
if(pt is TokenDeclSDType)
|
||||
if(pt is TokenDeclSDType ptSDType)
|
||||
{
|
||||
// Make a new TokenDeclSDType{Class,Delegate,Interface}.
|
||||
TokenDeclSDType ptSDType = (TokenDeclSDType)pt;
|
||||
TokenDeclSDType itSDType = ptSDType.MakeBlank(new TokenName(ptSDType.shortName, ptSDType.shortName.val));
|
||||
|
||||
// Set up the transformed outerSDType.
|
||||
|
@ -4507,7 +4504,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
}
|
||||
|
||||
// Check for an generic parameter to substitute out.
|
||||
else if((pt is TokenName) && this.genParams.TryGetValue(((TokenName)pt).val, out index))
|
||||
else if((pt is TokenName) && this.genParams.TryGetValue(((TokenName)pt).val, out int index))
|
||||
{
|
||||
it = genArgs[index].CopyToken(pt);
|
||||
}
|
||||
|
@ -4602,8 +4599,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
*/
|
||||
protected TokenType MakeTypeToken(string name)
|
||||
{
|
||||
TokenDeclSDType sdtdecl;
|
||||
if(sdTypes.TryGetValue(name, out sdtdecl))
|
||||
if (sdTypes.TryGetValue(name, out TokenDeclSDType sdtdecl))
|
||||
return sdtdecl.MakeRefToken(this);
|
||||
return TokenType.FromLSLType(this, name);
|
||||
}
|
||||
|
@ -4890,8 +4886,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
{
|
||||
int i = sm.methVTI;
|
||||
string methName = sm.methName;
|
||||
DynamicMethod dm;
|
||||
if(scriptObjCode.dynamicMethods.TryGetValue(methName, out dm))
|
||||
if (scriptObjCode.dynamicMethods.TryGetValue(methName, out DynamicMethod dm))
|
||||
{
|
||||
// method is not abstract
|
||||
vDynMeths[i] = dm;
|
||||
|
@ -5112,10 +5107,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
{
|
||||
retStr = objFileReader.ReadString();
|
||||
int nArgs = objFileReader.ReadInt32();
|
||||
if(asmFileWriter != null)
|
||||
{
|
||||
asmFileWriter.Write(" delegate " + retStr + " " + longName.val + "(");
|
||||
}
|
||||
asmFileWriter?.Write(" delegate " + retStr + " " + longName.val + "(");
|
||||
argStrs = new string[nArgs];
|
||||
for(int i = 0; i < nArgs; i++)
|
||||
{
|
||||
|
@ -5127,10 +5119,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
asmFileWriter.Write(argStrs[i]);
|
||||
}
|
||||
}
|
||||
if(asmFileWriter != null)
|
||||
{
|
||||
asmFileWriter.WriteLine(");");
|
||||
}
|
||||
asmFileWriter?.WriteLine(");");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -5188,9 +5177,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
*/
|
||||
public static TokenDeclSDTypeDelegate CreateInline(TokenType retType, TokenType[] argTypes)
|
||||
{
|
||||
TokenDeclSDTypeDelegate decldel;
|
||||
|
||||
// Name it after the whole signature string.
|
||||
// Name it after the whole signature string.
|
||||
StringBuilder sb = new StringBuilder("$inline");
|
||||
sb.Append(retType.ToString());
|
||||
sb.Append('(');
|
||||
|
@ -5204,7 +5191,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
}
|
||||
sb.Append(')');
|
||||
string inlname = sb.ToString();
|
||||
if(!inlines.TryGetValue(inlname, out decldel))
|
||||
if(!inlines.TryGetValue(inlname, out TokenDeclSDTypeDelegate decldel))
|
||||
{
|
||||
// Create the corresponding declaration and link to it
|
||||
TokenName name = new TokenName(null, inlname);
|
||||
|
@ -5219,18 +5206,16 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
|
||||
public static string TryGetInlineName(Type sysType)
|
||||
{
|
||||
string name;
|
||||
if(!inlrevs.TryGetValue(sysType, out name))
|
||||
return null;
|
||||
return name;
|
||||
if(inlrevs.TryGetValue(sysType, out string name))
|
||||
return name;
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Type TryGetInlineSysType(string name)
|
||||
{
|
||||
TokenDeclSDTypeDelegate decl;
|
||||
if(!inlines.TryGetValue(name, out decl))
|
||||
return null;
|
||||
return decl.GetSysType();
|
||||
if (inlines.TryGetValue(name, out TokenDeclSDTypeDelegate decl))
|
||||
return decl.GetSysType();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5479,11 +5464,10 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
int nArgs = argTypes.Length;
|
||||
foreach(TokenDeclSDType decl in tokenScript.sdSrcTypesValues)
|
||||
{
|
||||
if(decl is TokenDeclSDTypeDelegate)
|
||||
if(decl is TokenDeclSDTypeDelegate decldelg)
|
||||
{
|
||||
decldel = (TokenDeclSDTypeDelegate)decl;
|
||||
TokenType rt = decldel.GetRetType();
|
||||
TokenType[] ats = decldel.GetArgTypes();
|
||||
TokenType rt = decldelg.GetRetType();
|
||||
TokenType[] ats = decldelg.GetArgTypes();
|
||||
if((rt.ToString() == retType.ToString()) && (ats.Length == nArgs))
|
||||
{
|
||||
for(int i = 0; i < nArgs; i++)
|
||||
|
@ -5491,7 +5475,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
if(ats[i].ToString() != argTypes[i].ToString())
|
||||
goto nomatch;
|
||||
}
|
||||
this.decl = decldel;
|
||||
this.decl = decldelg;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -5766,10 +5750,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
*/
|
||||
public TokenDeclVar(Token original, TokenDeclVar func, TokenScript ts) : base(original)
|
||||
{
|
||||
if(func != null)
|
||||
{
|
||||
func.localVars.AddLast(this);
|
||||
}
|
||||
func?.localVars.AddLast(this);
|
||||
tokenScript = ts;
|
||||
}
|
||||
|
||||
|
@ -7283,8 +7264,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
|
||||
// Everything else depends on both operands.
|
||||
string key = lType + opstr + rType;
|
||||
BinOpStr binOpStr;
|
||||
if(BinOpStr.defined.TryGetValue(key, out binOpStr))
|
||||
if(BinOpStr.defined.TryGetValue(key, out BinOpStr binOpStr))
|
||||
{
|
||||
return TokenType.FromSysType(opcode, binOpStr.outtype);
|
||||
}
|
||||
|
@ -7877,11 +7857,9 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
initStmt.DebString(sb);
|
||||
else
|
||||
sb.Append(';');
|
||||
if(testRVal != null)
|
||||
testRVal.DebString(sb);
|
||||
testRVal?.DebString(sb);
|
||||
sb.Append(';');
|
||||
if(incrRVal != null)
|
||||
incrRVal.DebString(sb);
|
||||
incrRVal?.DebString(sb);
|
||||
sb.Append(") ");
|
||||
bodyStmt.DebString(sb);
|
||||
}
|
||||
|
@ -7903,11 +7881,9 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
public override void DebString(StringBuilder sb)
|
||||
{
|
||||
sb.Append("foreach (");
|
||||
if(keyLVal != null)
|
||||
keyLVal.DebString(sb);
|
||||
keyLVal?.DebString(sb);
|
||||
sb.Append(',');
|
||||
if(valLVal != null)
|
||||
valLVal.DebString(sb);
|
||||
valLVal?.DebString(sb);
|
||||
sb.Append(" in ");
|
||||
arrayRVal.DebString(sb);
|
||||
sb.Append(')');
|
||||
|
|
|
@ -557,18 +557,18 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
|
||||
// CallMode_NORMAL: run event handler from the beginning normally
|
||||
// CallMode_RESTORE: restore event handler stack from stackFrames
|
||||
callMode = (stackFrames == null) ? XMRInstAbstract.CallMode_NORMAL :
|
||||
callMode = (stackFrames is null) ? XMRInstAbstract.CallMode_NORMAL :
|
||||
XMRInstAbstract.CallMode_RESTORE;
|
||||
|
||||
while(true)
|
||||
{
|
||||
if(this.newStateCode < 0)
|
||||
if(newStateCode < 0)
|
||||
{
|
||||
// Process event given by 'stateCode' and 'eventCode'.
|
||||
// The event handler should call CheckRun() as often as convenient.
|
||||
int newState = this.stateCode;
|
||||
seh = this.m_ObjCode.scriptEventHandlerTable[newState, (int)this.eventCode];
|
||||
if(seh != null)
|
||||
int newState = stateCode;
|
||||
seh = m_ObjCode.scriptEventHandlerTable[newState, (int)eventCode];
|
||||
if(seh is not null)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -579,25 +579,25 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
newState = scse.newState;
|
||||
}
|
||||
}
|
||||
this.ehArgs = null; // we are done with them and no args for
|
||||
ehArgs = null; // we are done with them and no args for
|
||||
// exit_state()/enter_state() anyway
|
||||
|
||||
// The usual case is no state change.
|
||||
// Even a 'state <samestate>;' statement has no effect except to exit out.
|
||||
// It does not execute the state_exit() or state_entry() handlers.
|
||||
// See http://wiki.secondlife.com/wiki/State
|
||||
if(newState == this.stateCode)
|
||||
if(newState == stateCode)
|
||||
break;
|
||||
|
||||
// Save new state in a more permanent location in case we
|
||||
// get serialized out while in the state_exit() handler.
|
||||
this.newStateCode = newState;
|
||||
newStateCode = newState;
|
||||
}
|
||||
|
||||
// Call old state's state_exit() handler.
|
||||
this.eventCode = ScriptEventCode.state_exit;
|
||||
seh = this.m_ObjCode.scriptEventHandlerTable[this.stateCode, (int)ScriptEventCode.state_exit];
|
||||
if(seh != null)
|
||||
eventCode = ScriptEventCode.state_exit;
|
||||
seh = m_ObjCode.scriptEventHandlerTable[stateCode, (int)ScriptEventCode.state_exit];
|
||||
if(seh is not null)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -605,24 +605,25 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
}
|
||||
catch(ScriptChangeStateException scse)
|
||||
{
|
||||
this.newStateCode = scse.newState;
|
||||
newStateCode = scse.newState;
|
||||
}
|
||||
}
|
||||
|
||||
// Switch over to the new state's state_entry() handler.
|
||||
this.stateCode = this.newStateCode;
|
||||
this.eventCode = ScriptEventCode.state_entry;
|
||||
this.newStateCode = -1;
|
||||
stateCode = newStateCode;
|
||||
eventCode = ScriptEventCode.state_entry;
|
||||
newStateCode = -1;
|
||||
|
||||
// Now that the old state can't possibly start any more activity,
|
||||
// cancel any listening handlers, etc, of the old state.
|
||||
this.StateChange();
|
||||
StateChange();
|
||||
|
||||
// Loop back to execute new state's state_entry() handler.
|
||||
}
|
||||
|
||||
// Event no longer being processed.
|
||||
this.eventCode = ScriptEventCode.None;
|
||||
stackFrames = null;
|
||||
eventCode = ScriptEventCode.None;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -284,11 +284,8 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
|
||||
try
|
||||
{
|
||||
//m_RunOnePhase = "check entry invariants";
|
||||
CheckRunLockInvariants(true);
|
||||
|
||||
// Maybe it has been Disposed()
|
||||
if(m_Part is null || m_Part.Inventory is null)
|
||||
// Maybe it has been Disposed()
|
||||
if (m_Part is null || m_Part.Inventory is null)
|
||||
{
|
||||
//m_RunOnePhase = "runone saw it disposed";
|
||||
return XMRInstState.DISPOSED;
|
||||
|
@ -312,12 +309,13 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
m_Suspended = true;
|
||||
m_DetachReady.Set();
|
||||
//m_RunOnePhase = "detach quantum went zero";
|
||||
CheckRunLockInvariants(true);
|
||||
return XMRInstState.FINISHED;
|
||||
}
|
||||
}
|
||||
|
||||
//m_RunOnePhase = "resume old event handler";
|
||||
CheckRunLockInvariants(true);
|
||||
|
||||
m_LastRanAt = now;
|
||||
m_InstEHSlice++;
|
||||
callMode = CallMode_NORMAL;
|
||||
|
@ -345,7 +343,6 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
if(m_Suspended)
|
||||
{
|
||||
//m_RunOnePhase = "m_Suspended is set";
|
||||
CheckRunLockInvariants(true);
|
||||
return XMRInstState.FINISHED;
|
||||
}
|
||||
|
||||
|
@ -365,7 +362,6 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
m_DetachReady.Set();
|
||||
m_DetachQuantum = 0;
|
||||
//m_RunOnePhase = "nothing to do #3";
|
||||
CheckRunLockInvariants(true);
|
||||
return XMRInstState.FINISHED;
|
||||
}
|
||||
}
|
||||
|
@ -387,14 +383,16 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
m_DetachQuantum = 0;
|
||||
}
|
||||
//m_RunOnePhase = "nothing to do #4";
|
||||
CheckRunLockInvariants(true);
|
||||
return XMRInstState.FINISHED;
|
||||
}
|
||||
}
|
||||
|
||||
// Dequeued an event, so start it going until it either
|
||||
// finishes or it calls CheckRun().
|
||||
// Dequeued an event, so start it going until it either
|
||||
// finishes or it calls CheckRun().
|
||||
//m_RunOnePhase = "start event handler";
|
||||
|
||||
CheckRunLockInvariants(true);
|
||||
|
||||
m_DetectParams = evt.DetectParams;
|
||||
m_LastRanAt = now;
|
||||
m_InstEHEvent++;
|
||||
|
@ -404,12 +402,11 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
m_CPUTime += DateTime.UtcNow.Subtract(now).TotalMilliseconds;
|
||||
|
||||
// Maybe it puqued.
|
||||
if(e != null)
|
||||
if(e is not null)
|
||||
{
|
||||
//m_RunOnePhase = "handling exception " + e.Message;
|
||||
HandleScriptException(e);
|
||||
//m_RunOnePhase = "return had exception " + e.Message;
|
||||
CheckRunLockInvariants(true);
|
||||
return XMRInstState.FINISHED;
|
||||
}
|
||||
}
|
||||
|
@ -432,28 +429,28 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
/**
|
||||
* @brief Immediately after taking m_RunLock or just before releasing it, check invariants.
|
||||
*/
|
||||
//private ScriptEventCode lastEventCode = ScriptEventCode.None;
|
||||
//private bool lastActive = false;
|
||||
//private string lastRunPhase = "";
|
||||
|
||||
public void CheckRunLockInvariants(bool throwIt)
|
||||
{
|
||||
// If not executing any event handler, there shouldn't be any saved stack frames.
|
||||
// If executing an event handler, there should be some saved stack frames.
|
||||
bool active = (stackFrames is not null);
|
||||
if((active && (eventCode == ScriptEventCode.None)) ||
|
||||
(!active && (eventCode != ScriptEventCode.None)))
|
||||
// If not executing any event handler, there shouldn't be any saved stack frames.
|
||||
// If executing an event handler, there should be some saved stack frames.
|
||||
if (eventCode == ScriptEventCode.None)
|
||||
{
|
||||
m_log.Error("CheckRunLockInvariants: script=" + m_DescName);
|
||||
m_log.Error("CheckRunLockInvariants: eventcode=" + eventCode.ToString() + ", active=" + active.ToString());
|
||||
//m_log.Error("CheckRunLockInvariants: m_RunOnePhase=" + m_RunOnePhase);
|
||||
//m_log.Error("CheckRunLockInvariants: lastec=" + lastEventCode + ", lastAct=" + lastActive + ", lastPhase=" + lastRunPhase);
|
||||
if(throwIt)
|
||||
throw new Exception("CheckRunLockInvariants: eventcode=" + eventCode.ToString() + ", active=" + active.ToString());
|
||||
if (stackFrames is not null)
|
||||
{
|
||||
m_log.Error($"CheckRunLockInvariants: script {m_DescName}, eventcode: None, stackFrame not null");
|
||||
if (throwIt)
|
||||
throw new Exception("CheckRunLockInvariants: eventcode=None, stackFrame not null");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (stackFrames is null)
|
||||
{
|
||||
m_log.Error($"CheckRunLockInvariants: script {m_DescName}, eventcode {eventCode}, stackFrame null");
|
||||
if (throwIt)
|
||||
throw new Exception("CheckRunLockInvariants: eventcode=" + eventCode.ToString() + ", stackFrame null");
|
||||
}
|
||||
}
|
||||
//lastEventCode = eventCode;
|
||||
//lastActive = active;
|
||||
//lastRunPhase = m_RunOnePhase;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -483,7 +480,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
throw new Exception("still processing event " + this.eventCode.ToString());
|
||||
|
||||
// Silly to even try if there is no handler defined for this event.
|
||||
if ((newEventCode >= 0) && (m_ObjCode.scriptEventHandlerTable[stateCode, (int)newEventCode] == null))
|
||||
if ((newEventCode >= 0) && (m_ObjCode.scriptEventHandlerTable[stateCode, (int)newEventCode] is null))
|
||||
return null;
|
||||
|
||||
// Save eventCode so we know what event handler to run in the microthread.
|
||||
|
@ -813,10 +810,6 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
// Reset everything and queue up default's start_entry() event.
|
||||
ClearQueue();
|
||||
ResetLocked("external Reset");
|
||||
|
||||
// Mark it idle now so it can get queued to process new stuff.
|
||||
|
||||
CheckRunLockInvariants(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -833,10 +826,10 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
}
|
||||
|
||||
m_EventQueue.Clear();
|
||||
for(int i = m_EventCounts.Length; --i >= 0;)
|
||||
for (int i = 0; i < m_EventCounts.Length; ++i)
|
||||
m_EventCounts[i] = 0;
|
||||
|
||||
for(int i = 0; i < n; i++)
|
||||
for (int i = 0; i < n; i++)
|
||||
m_EventQueue.AddLast(linkMessages[i]);
|
||||
|
||||
m_EventCounts[(int)ScriptEventCode.link_message] = n;
|
||||
|
@ -848,7 +841,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
lock(m_QueueLock)
|
||||
{
|
||||
m_EventQueue.Clear(); // no events queued
|
||||
for(int i = m_EventCounts.Length; --i >= 0;)
|
||||
for (int i = 0; i < m_EventCounts.Length; ++i)
|
||||
m_EventCounts[i] = 0;
|
||||
}
|
||||
}
|
||||
|
@ -876,7 +869,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
AsyncCommandManager.RemoveScript(m_Engine, m_LocalID, m_ItemID);
|
||||
|
||||
//m_RunOnePhase = "ResetLocked: clearing current event";
|
||||
this.eventCode = ScriptEventCode.None; // not processing an event
|
||||
eventCode = ScriptEventCode.None; // not processing an event
|
||||
m_DetectParams = null; // not processing an event
|
||||
m_SleepUntil = DateTime.MinValue; // not doing llSleep()
|
||||
m_ResetCount++; // has been reset once more
|
||||
|
@ -1008,8 +1001,8 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
m_Suspended = false;
|
||||
m_DetachQuantum = 0;
|
||||
m_DetachReady.Set();
|
||||
if ((m_EventQueue != null) &&
|
||||
(m_EventQueue.First != null) &&
|
||||
if ((m_EventQueue is not null) &&
|
||||
(m_EventQueue.First is not null) &&
|
||||
(m_IState == XMRInstState.IDLE))
|
||||
{
|
||||
m_IState = XMRInstState.ONSTARTQ;
|
||||
|
|
|
@ -59,10 +59,10 @@
|
|||
; PrivatePort should closed at the firewall.
|
||||
|
||||
;# {PublicPort} {} {PublicPort} {8002 9000} "9000"
|
||||
; in case of a standalone this needs to match the parameter http_listener_port in section [Network] below
|
||||
; in that case the default is 9000
|
||||
; in case of a standalone this needs to match the parameter http_listener_port in section [Network] below
|
||||
; in that case the default is 9000
|
||||
PublicPort = "9000"
|
||||
; for a region on a grid, the grid services public port should be used, normal default is 8002
|
||||
; for a region on a grid, the grid services public port should be used, normal default is 8002
|
||||
;PublicPort = "8002"
|
||||
|
||||
; you can also have them on a diferent url / IP
|
||||
|
@ -641,6 +641,8 @@
|
|||
;# {ExternalHostNameForLSL} {} {Hostname to use for HTTP-IN URLs. This should be reachable from the internet.} {}
|
||||
;; Hostname to use in llRequestURL/llRequestSecureURL
|
||||
;; if not defined - llRequestURL/llRequestSecureURL are disabled
|
||||
;; this should be reachable from internet and point this machine
|
||||
;; for standalones it can be
|
||||
ExternalHostNameForLSL = ${Const|BaseHostname}
|
||||
|
||||
;# {shard} {} {Name to use for X-Secondlife-Shard header? (press enter if unsure)} {} OpenSim
|
||||
|
|
Loading…
Reference in New Issue