public Frame getNextFrame() { int index = frameIndex; Frame[] stack = frameStack; if (index + 1 == stack.length) { expandFramesIfNecessary(); } return stack[index + 1]; }
private void pushFrame() { int index = ++this.frameIndex; Frame[] stack = frameStack; stack[index].updateFrame(file, line); if (index + 1 == stack.length) { expandFramesIfNecessary(); } }
private void pushEvalFrame(IRubyObject self) { int index = ++this.frameIndex; Frame[] stack = frameStack; stack[index].updateFrameForEval(self, file, line); if (index + 1 == stack.length) { expandFramesIfNecessary(); } }
private void pushCallFrame(RubyModule clazz, String name, IRubyObject self, Block block) { int index = ++this.frameIndex; Frame[] stack = frameStack; stack[index].updateFrame(clazz, self, name, block, file, line); if (index + 1 == stack.length) { expandFramesIfNecessary(); } }
private Frame pushFrame(Frame frame) { int index = ++this.frameIndex; Frame[] stack = frameStack; stack[index] = frame; if (index + 1 == stack.length) { expandFramesIfNecessary(); } return frame; }
//////////////////// FRAME MANAGEMENT //////////////////////// private void pushFrameCopy() { int index = ++this.frameIndex; Frame[] stack = frameStack; Frame currentFrame = stack[index - 1]; stack[index].updateFrame(currentFrame); if (index + 1 == stack.length) { expandFramesIfNecessary(); } }