internal static RubyTopLevelScope/*!*/ CreateWrappedTopLevelScope(Scope/*!*/ globalScope, RubyContext/*!*/ context) { RubyGlobalScope rubyGlobalScope = context.InitializeGlobalScope(globalScope, false, false); RubyModule module = context.CreateModule(null, null, null, null, null, null, null, ModuleRestrictions.None); RubyObject mainObject = new RubyObject(context.ObjectClass); context.CreateMainSingleton(mainObject, new[] { module }); RubyTopLevelScope scope = new RubyTopLevelScope(rubyGlobalScope, module, null, mainObject); scope.SetDebugName("top-level-wrapped"); return scope; }
internal static RubyTopLevelScope/*!*/ CreateTopLevelScope(Scope/*!*/ globalScope, RubyContext/*!*/ context, bool isMain) { RubyGlobalScope rubyGlobalScope = context.InitializeGlobalScope(globalScope, false, false); RubyTopLevelScope scope = new RubyTopLevelScope(rubyGlobalScope, null, null, rubyGlobalScope.MainObject); if (isMain) { scope.SetDebugName("top-main"); context.ObjectClass.SetConstant("TOPLEVEL_BINDING", new Binding(scope)); if (context.RubyOptions.RequirePaths != null) { foreach (var path in context.RubyOptions.RequirePaths) { context.Loader.LoadFile(globalScope, rubyGlobalScope.MainObject, MutableString.Create(path, RubyEncoding.UTF8), LoadFlags.Require); } } } else { scope.SetDebugName("top-required"); } return scope; }
internal static RubyTopLevelScope/*!*/ CreateHostedTopLevelScope(Scope/*!*/ globalScope, RubyContext/*!*/ context, bool bindGlobals) { RubyGlobalScope rubyGlobalScope = context.InitializeGlobalScope(globalScope, true, bindGlobals); // Reuse existing top-level scope if available: RubyTopLevelScope scope = rubyGlobalScope.TopLocalScope; if (scope == null) { scope = new RubyTopLevelScope( rubyGlobalScope, null, bindGlobals ? rubyGlobalScope.MainSingleton : null, rubyGlobalScope.MainObject ); scope.SetDebugName(bindGlobals ? "top-level-bound" : "top-level"); rubyGlobalScope.SetTopLocalScope(scope); } else { // If we reuse a local scope from previous execution all local variables are accessed dynamically. // Therefore we shouldn't have any new static local variables. } return scope; }
internal static RubyTopLevelScope/*!*/ CreateWrappedTopLevelScope(Scope/*!*/ globalScope, RubyContext/*!*/ context) { RubyModule module = context.CreateModule(null, null, null, null, null, null, null); object mainObject = new Object(); RubyClass mainSingleton = context.CreateMainSingleton(mainObject, new[] { module }); RubyGlobalScope rubyGlobalScope = context.InitializeGlobalScope(globalScope, false); RubyTopLevelScope scope = new RubyTopLevelScope(rubyGlobalScope, module, new RuntimeFlowControl(), mainObject); scope.SetDebugName("top-level-wrapped"); return scope; }
internal static RubyTopLevelScope/*!*/ CreateTopLevelScope(Scope/*!*/ globalScope, RubyContext/*!*/ context) { RubyGlobalScope rubyGlobalScope = context.InitializeGlobalScope(globalScope, false); RubyTopLevelScope scope = new RubyTopLevelScope(rubyGlobalScope, null, new RuntimeFlowControl(), rubyGlobalScope.MainObject); scope.SetDebugName("top-level"); return scope; }
internal static RubyTopLevelScope/*!*/ CreateTopLevelHostedScope(Scope/*!*/ globalScope, RubyContext/*!*/ context) { RubyGlobalScope rubyGlobalScope = context.InitializeGlobalScope(globalScope, true); // Reuse existing top-level scope if available: RubyTopLevelScope scope = rubyGlobalScope.TopLocalScope; if (scope == null) { scope = new RubyTopLevelScope(rubyGlobalScope, null, new RuntimeFlowControl(), rubyGlobalScope.MainObject); scope.SetDebugName("top-level-hosted"); rubyGlobalScope.TopLocalScope = scope; } else { // If we reuse a local scope from previous execution all local variables are accessed dynamically. // Therefore we shouldn't have any new static local variables. } return scope; }
internal static RubyTopLevelScope/*!*/ CreateMainTopLevelScope(Scope/*!*/ globalScope, RubyContext/*!*/ context) { RubyGlobalScope rubyGlobalScope = context.InitializeGlobalScope(globalScope, false); RubyTopLevelScope scope = new RubyTopLevelScope(rubyGlobalScope, null, new RuntimeFlowControl(), rubyGlobalScope.MainObject); scope.SetDebugName("top-main"); context.ObjectClass.SetConstant("TOPLEVEL_BINDING", new Binding(scope)); return scope; }
internal static RubyTopLevelScope/*!*/ CreateTopLevelScope(Scope/*!*/ globalScope, RubyContext/*!*/ context, bool isMain) { RubyGlobalScope rubyGlobalScope = context.InitializeGlobalScope(globalScope, false, false); RubyTopLevelScope scope = new RubyTopLevelScope(rubyGlobalScope, null, null, rubyGlobalScope.MainObject); if (isMain) { scope.SetDebugName("top-main"); context.ObjectClass.SetConstant("TOPLEVEL_BINDING", new Binding(scope)); } else { scope.SetDebugName("top-required"); } return scope; }