Skip to content

Commit

Permalink
[Truffle] Pass LexicalScope explicitly to OpenModuleNode.
Browse files Browse the repository at this point in the history
* So it does not depend on runtime SharedMethodInfo's LexicalScope.
  • Loading branch information
eregon committed Jan 7, 2015
1 parent 3e4f49c commit ea58dc2
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 3 deletions.
Expand Up @@ -28,12 +28,14 @@ public class OpenModuleNode extends RubyNode {

@Child protected RubyNode definingModule;
@Child protected MethodDefinitionNode definitionMethod;
final protected LexicalScope lexicalScope;
@Child protected IndirectCallNode callModuleDefinitionNode;

public OpenModuleNode(RubyContext context, SourceSection sourceSection, RubyNode definingModule, MethodDefinitionNode definitionMethod) {
public OpenModuleNode(RubyContext context, SourceSection sourceSection, RubyNode definingModule, MethodDefinitionNode definitionMethod, LexicalScope lexicalScope) {
super(context, sourceSection);
this.definingModule = definingModule;
this.definitionMethod = definitionMethod;
this.lexicalScope = lexicalScope;
callModuleDefinitionNode = Truffle.getRuntime().createIndirectCallNode();
}

Expand All @@ -44,7 +46,6 @@ public Object execute(VirtualFrame frame) {
// TODO(CS): cast
final RubyModule module = (RubyModule) definingModule.execute(frame);

LexicalScope lexicalScope = definitionMethod.getSharedMethodInfo().getLexicalScope();
lexicalScope.setLiveModule(module);
lexicalScope.getParent().getLiveModule().addLexicalDependent(module);

Expand Down
Expand Up @@ -763,7 +763,7 @@ private RubyNode openModule(SourceSection sourceSection, RubyNode defineOrGetNod

final MethodDefinitionNode definitionMethod = classTranslator.compileClassNode(sourceSection, name, bodyNode);

return new OpenModuleNode(context, sourceSection, defineOrGetNode, definitionMethod);
return new OpenModuleNode(context, sourceSection, defineOrGetNode, definitionMethod, newLexicalScope);
} finally {
environment.popLexicalScope();
}
Expand Down

0 comments on commit ea58dc2

Please sign in to comment.