Skip to content

Commit

Permalink
Merge branch 'master' into truffle-head
Browse files Browse the repository at this point in the history
Conflicts:
	truffle/src/main/java/org/jruby/truffle/nodes/core/RegexpNodes.java
	truffle/src/main/java/org/jruby/truffle/nodes/rubinius/StringPrimitiveNodes.java
	truffle/src/main/java/org/jruby/truffle/nodes/rubinius/VMPrimitiveNodes.java
	truffle/src/main/java/org/jruby/truffle/runtime/RubyContext.java
  • Loading branch information
chrisseaton committed Apr 14, 2015
2 parents b2b02cb + bb9dbb7 commit f845e75
Show file tree
Hide file tree
Showing 51 changed files with 2,671 additions and 1,126 deletions.
136 changes: 68 additions & 68 deletions core/src/main/java/org/jruby/embed/ScriptingContainer.java

Large diffs are not rendered by default.

Expand Up @@ -29,6 +29,7 @@
*/
package org.jruby.embed.internal;

import org.jruby.Ruby;
import org.jruby.RubyInstanceConfig;
import org.jruby.embed.LocalVariableBehavior;

Expand All @@ -37,19 +38,62 @@
* @author Yoko Harada <yokolet@gmail.com>
*/
public abstract class AbstractLocalContextProvider implements LocalContextProvider {
protected RubyInstanceConfig config = new RubyInstanceConfig();
protected LocalVariableBehavior behavior = LocalVariableBehavior.TRANSIENT;

protected final RubyInstanceConfig config;
protected final LocalVariableBehavior behavior;
protected boolean lazy = true;

public RubyInstanceConfig getRubyInstanceConfig() {
return config;
protected AbstractLocalContextProvider() {
this( new RubyInstanceConfig() );
}

protected AbstractLocalContextProvider(RubyInstanceConfig config) {
this.config = config; this.behavior = LocalVariableBehavior.TRANSIENT;
}

protected AbstractLocalContextProvider(RubyInstanceConfig config, LocalVariableBehavior behavior) {
this.config = config; this.behavior = behavior;
}

protected AbstractLocalContextProvider(LocalVariableBehavior behavior) {
this.config = new RubyInstanceConfig(); this.behavior = behavior;
}

protected LocalContext getInstance() {
return new LocalContext(config, behavior, lazy);
}


@Override
public RubyInstanceConfig getRubyInstanceConfig() {
return config;
}

@Override
public LocalVariableBehavior getLocalVariableBehavior() {
return behavior;
}

boolean isGlobalRuntimeReady() { return Ruby.isGlobalRuntimeReady(); }

Ruby getGlobalRuntime(AbstractLocalContextProvider provider) {
if ( isGlobalRuntimeReady() ) {
return Ruby.getGlobalRuntime();
}
return Ruby.newInstance(provider.config);
}

RubyInstanceConfig getGlobalRuntimeConfig(AbstractLocalContextProvider provider) {
// make sure we do not yet initialize the runtime here
if ( isGlobalRuntimeReady() ) {
return getGlobalRuntime(provider).getInstanceConfig();
}
return provider.config;
}

static RubyInstanceConfig getGlobalRuntimeConfigOrNew() {
return Ruby.isGlobalRuntimeReady() ?
Ruby.getGlobalRuntime().getInstanceConfig() :
new RubyInstanceConfig();
}

}

0 comments on commit f845e75

Please sign in to comment.