Skip to content

Commit

Permalink
[Truffle] Add uncached constant lookup in LookupConstantWithLexicalSc…
Browse files Browse the repository at this point in the history
…opeNode.
  • Loading branch information
eregon committed Sep 26, 2016
1 parent cc9cbc5 commit ea0c454
Showing 1 changed file with 12 additions and 1 deletion.
Expand Up @@ -10,6 +10,7 @@
package org.jruby.truffle.language.constants;

import com.oracle.truffle.api.Assumption;
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
import com.oracle.truffle.api.dsl.Cached;
import com.oracle.truffle.api.dsl.Specialization;
import com.oracle.truffle.api.frame.VirtualFrame;
Expand Down Expand Up @@ -43,7 +44,7 @@ public RubyConstant lookupConstant(VirtualFrame frame, Object module, String nam
}

@Specialization(assumptions = "getUnmodifiedAssumption(getModule())")
protected RubyConstant lookupConstant(VirtualFrame frame,
protected RubyConstant lookupConstant(
@Cached("doLookup()") RubyConstant constant,
@Cached("isVisible(constant)") boolean isVisible) {
if (!isVisible) {
Expand All @@ -52,6 +53,16 @@ protected RubyConstant lookupConstant(VirtualFrame frame,
return constant;
}

@TruffleBoundary
@Specialization(assumptions = "getUnmodifiedAssumption(getModule())")
protected RubyConstant lookupConstantUncached() {
RubyConstant constant = doLookup();
if (!isVisible(constant)) {
throw new RaiseException(coreExceptions().nameErrorPrivateConstant(getModule(), name, this));
}
return constant;
}

public Assumption getUnmodifiedAssumption(DynamicObject module) {
return Layouts.MODULE.getFields(module).getUnmodifiedAssumption();
}
Expand Down

0 comments on commit ea0c454

Please sign in to comment.