Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jruby/jruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 7021c5a54305
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 27a53e8d1dc8
Choose a head ref
  • 5 commits
  • 3 files changed
  • 1 contributor

Commits on Oct 16, 2014

  1. Copy the full SHA
    593ca19 View commit details
  2. Do not put new cloned instrs back into original CFG. WrappedIRClosure is

    converted to ClosureInterpreterContext which is not usable by the JIT.
    
    This cloning was done for CFG to match interpreter instr list for accurate
    debugging.  A followup commit will clone CFG if debug is enabled so that
    we have a contention-free CFG (from JIT) and one which has same instrs
    as what the interpreter is interpreting.
    enebo committed Oct 16, 2014
    Copy the full SHA
    77e15cc View commit details
  3. Merge with master

    enebo committed Oct 16, 2014
    Copy the full SHA
    8a5811c View commit details
  4. Copy the full SHA
    14cef13 View commit details
  5. Copy the full SHA
    27a53e8 View commit details
Showing with 3 additions and 9 deletions.
  1. +1 −0 .travis.yml
  2. +1 −7 core/src/main/java/org/jruby/ir/IRScope.java
  3. +1 −2 core/src/main/java/org/jruby/ir/targets/JVMVisitor.java
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -50,6 +50,7 @@ matrix:
allow_failures:
- env: TARGET='-Pcomplete'
- env: TARGET='-Prake -Dtask=spec:compiler'
- env: TARGET='-Posgi'

branches:
only:
8 changes: 1 addition & 7 deletions core/src/main/java/org/jruby/ir/IRScope.java
Original file line number Diff line number Diff line change
@@ -472,6 +472,7 @@ protected Instr[] prepareInstructions() {
SimpleCloneInfo cloneInfo = new SimpleCloneInfo(this, false);

// FIXME: If CFG (or linearizedBBList) knew number of instrs we could end up allocing better
// FIXME: Clone CFG in debug mode so interpreter can get matching info to instrs it is interp'ing

// Pass 1. Set up IPCs for labels and instructions and build linear instr list
List<Instr> newInstrs = new ArrayList<>();
@@ -495,11 +496,6 @@ protected Instr[] prepareInstructions() {
}

newInstr.setIPC(ipc);

// We add back to original CFG so that debug output will match up with what
// we saved to interpreter. This knowledge may get changed if we are interp'ing
// with debug output while JIT is running (FIXME?)
bbInstrs.set(i, newInstr);
newInstrs.add(newInstr);
ipc++;
}
@@ -641,8 +637,6 @@ public synchronized List<BasicBlock> prepareForCompilation() {

runCompilerPasses(getManager().getJITPasses(this));

prepareInstructions();

return buildLinearization();
}

3 changes: 1 addition & 2 deletions core/src/main/java/org/jruby/ir/targets/JVMVisitor.java
Original file line number Diff line number Diff line change
@@ -1434,8 +1434,7 @@ public void PushFrameInstr(PushFrameInstr pushframeinstr) {
jvmAdapter().ldc(pushframeinstr.getFrameName().getName());
jvmMethod().loadSelf();
jvmMethod().loadBlock();
jvmMethod().loadStaticScope();
jvmMethod().invokeVirtual(Type.getType(ThreadContext.class), Method.getMethod("void preMethodFrameAndClass(org.jruby.RubyModule, String, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block, org.jruby.parser.StaticScope)"));
jvmMethod().invokeVirtual(Type.getType(ThreadContext.class), Method.getMethod("void preMethodFrameOnly(org.jruby.RubyModule, String, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block)"));

// FIXME: this should be part of explicit call protocol only when needed, optimizable, and correct for the scope
// See also CompiledIRMethod.call