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: 1fa1deffd944
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 804ccd45af6c
Choose a head ref

Commits on Oct 24, 2014

  1. def inside ensure would also go crazy. Build all of method def inside…

    … new builder instance.
    enebo committed Oct 24, 2014
    Copy the full SHA
    da8af1c View commit details
  2. First refactorign of JIT and indy logic.

    * Different indy site types are now their own CallSite subclasses.
    * Fixed issues with dregexp (once, JVM6 bugs, ...)
    
    This new structure should make it a lot easier for everyone to
    follow how we're using indy and what happens when a call site is
    bound.
    headius committed Oct 24, 2014
    Copy the full SHA
    ffbb14e View commit details
  3. Copy the full SHA
    8da3a82 View commit details
  4. Copy the full SHA
    b56f240 View commit details
  5. [Truffle] Use the lazy initialization pattern.

    * Also make a static call to #<=.
    eregon committed Oct 24, 2014
    Copy the full SHA
    200657d View commit details
  6. Copy the full SHA
    f7de5ee View commit details
  7. Copy the full SHA
    229038c View commit details
  8. Copy the full SHA
    108afd1 View commit details
  9. Copy the full SHA
    de16061 View commit details

Commits on Oct 25, 2014

  1. Copy the full SHA
    b160b2d View commit details
  2. Copy the full SHA
    9bae5af View commit details
  3. Copy the full SHA
    232120a View commit details
  4. [Truffle] Step towards talking about required and optional in arity, …

    …rather than min and max.
    chrisseaton committed Oct 25, 2014
    Copy the full SHA
    6ceac98 View commit details
  5. [Truffle] Change min, max, isSplatted to required, optional, argument…

    …sAsArray in the CoreMethod annotation.
    chrisseaton committed Oct 25, 2014
    1
    Copy the full SHA
    23c144f View commit details
  6. Copy the full SHA
    edcc5d1 View commit details

Commits on Oct 26, 2014

  1. Merge branch 'master' into truffle-head

    Conflicts:
    	core/src/main/java/org/jruby/truffle/nodes/RubyValueProfile.java
    chrisseaton committed Oct 26, 2014
    Copy the full SHA
    e3a4dcd View commit details
  2. Copy the full SHA
    96892f7 View commit details
  3. Copy the full SHA
    3a6d15a View commit details
  4. [Truffle] Get rid of the copy of options stored in RubyContext.

    We used to copy some of the options into RubyContext where they can be
    final for the benefit of the PE, as using Option.load() requires a
    volatile read.
    chrisseaton committed Oct 26, 2014
    Copy the full SHA
    7cfbcfd View commit details
  5. [Truffle] Remove visibility asserts - a mess, and don't always make s…

    …ense in multi-language environment.
    chrisseaton committed Oct 26, 2014
    Copy the full SHA
    5257211 View commit details
  6. [Truffle] Change the generic dispatch node from caching to looking up…

    … every time.
    
    This node had lots of potential problems - invalidation wasn't checked,
    dead entries weren't removed, and the hash tables weren't synchronised.
    For now we'll just remove the caching, call it UncachedDispatchNode,
    and make it neverPartOfCompilation.
    chrisseaton committed Oct 26, 2014
    Copy the full SHA
    f72ddfa View commit details
  7. Copy the full SHA
    0e4dc82 View commit details
  8. Copy the full SHA
    5bf8d52 View commit details
  9. Remove thread-poll from caching call sites

    * The IR builder adds thread polls at all required places.
    subbuss committed Oct 26, 2014
    Copy the full SHA
    bcda0cc View commit details
  10. Copy the full SHA
    1c19167 View commit details
  11. Copy the full SHA
    43c0df9 View commit details
  12. Copy the full SHA
    1a93885 View commit details

Commits on Oct 27, 2014

  1. Implement the offset part of detailed source sections.

    It's not always correct, but it only leads to four failing Truffle specs
    for keywords that the parser then asks the lexer again for a position,
    such as __FILE__.
    chrisseaton committed Oct 27, 2014
    Copy the full SHA
    04a3de8 View commit details
  2. Merge branch 'master' into truffle-head

    Conflicts:
    	core/src/main/java/org/jruby/truffle/nodes/RubyRootNode.java
    	core/src/main/java/org/jruby/truffle/nodes/dispatch/GenericDispatchNode.java
    	core/src/main/java/org/jruby/truffle/runtime/RubyContext.java
    chrisseaton committed Oct 27, 2014
    Copy the full SHA
    804ccd4 View commit details
Showing with 2,547 additions and 2,840 deletions.
  1. +2 −6 core/src/main/java/org/jruby/Ruby.java
  2. +2 −2 core/src/main/java/org/jruby/ast/NilImplicitNode.java
  3. +1 −1 core/src/main/java/org/jruby/ast/Node.java
  4. +2 −2 core/src/main/java/org/jruby/ast/RequiredKeywordArgumentValueNode.java
  5. +1 −3 core/src/main/java/org/jruby/ast/util/SexpMaker.java
  6. +2 −2 core/src/main/java/org/jruby/common/RubyWarnings.java
  7. +2 −2 core/src/main/java/org/jruby/internal/runtime/methods/CompiledMethod.java
  8. +1 −1 core/src/main/java/org/jruby/internal/runtime/methods/InvocationMethodFactory.java
  9. +1 −1 core/src/main/java/org/jruby/internal/runtime/methods/ReflectedCompiledMethod.java
  10. +27 −22 core/src/main/java/org/jruby/ir/IRBuilder.java
  11. +4 −4 core/src/main/java/org/jruby/ir/IRManager.java
  12. +22 −0 core/src/main/java/org/jruby/ir/instructions/RuntimeHelperCall.java
  13. +58 −3 core/src/main/java/org/jruby/ir/representations/CFG.java
  14. +11 −0 core/src/main/java/org/jruby/ir/runtime/IRRuntimeHelpers.java
  15. +37 −0 core/src/main/java/org/jruby/ir/targets/BignumObjectSite.java
  16. +72 −937 core/src/main/java/org/jruby/ir/targets/Bootstrap.java
  17. +1 −0 core/src/main/java/org/jruby/ir/targets/ClassData.java
  18. +24 −0 core/src/main/java/org/jruby/ir/targets/ClassSuperInvokeSite.java
  19. +34 −0 core/src/main/java/org/jruby/ir/targets/ConstructObjectSite.java
  20. +69 −0 core/src/main/java/org/jruby/ir/targets/DRegexpObjectSite.java
  21. +36 −0 core/src/main/java/org/jruby/ir/targets/FixnumObjectSite.java
  22. +37 −0 core/src/main/java/org/jruby/ir/targets/FloatObjectSite.java
  23. +22 −7 core/src/main/java/org/jruby/ir/targets/IRBytecodeAdapter.java
  24. +63 −3 core/src/main/java/org/jruby/ir/targets/IRBytecodeAdapter6.java
  25. +45 −13 core/src/main/java/org/jruby/ir/targets/IRBytecodeAdapter7.java
  26. +24 −0 core/src/main/java/org/jruby/ir/targets/InstanceSuperInvokeSite.java
  27. +146 −0 core/src/main/java/org/jruby/ir/targets/InvokeSite.java
  28. +18 −18 core/src/main/java/org/jruby/ir/targets/JVMVisitor.java
  29. +49 −0 core/src/main/java/org/jruby/ir/targets/LazyObjectSite.java
  30. +58 −0 core/src/main/java/org/jruby/ir/targets/NormalInvokeSite.java
  31. +48 −0 core/src/main/java/org/jruby/ir/targets/RegexpObjectSite.java
  32. +57 −0 core/src/main/java/org/jruby/ir/targets/SelfInvokeSite.java
  33. +80 −0 core/src/main/java/org/jruby/ir/targets/SuperInvokeSite.java
  34. +36 −0 core/src/main/java/org/jruby/ir/targets/SymbolObjectSite.java
  35. +24 −0 core/src/main/java/org/jruby/ir/targets/UnresolvedSuperInvokeSite.java
  36. +25 −0 core/src/main/java/org/jruby/ir/targets/ZSuperInvokeSite.java
  37. +2 −3 core/src/main/java/org/jruby/lexer/yacc/ByteArrayLexerSource.java
  38. +10 −4 core/src/main/java/org/jruby/lexer/yacc/{TruffleSourcePosition.java → DetailedSourcePosition.java}
  39. +1 −16 core/src/main/java/org/jruby/lexer/yacc/ISourcePosition.java
  40. +2 −8 core/src/main/java/org/jruby/lexer/yacc/InputStreamLexerSource.java
  41. +10 −34 ...c/main/java/org/jruby/lexer/yacc/{TruffleSourcePositionFactory.java → InvalidSourcePosition.java}
  42. +48 −19 core/src/main/java/org/jruby/lexer/yacc/LexerSource.java
  43. +8 −9 core/src/main/java/org/jruby/lexer/yacc/RubyLexer.java
  44. +3 −5 core/src/main/java/org/jruby/lexer/yacc/SimpleSourcePosition.java
  45. +0 −77 core/src/main/java/org/jruby/lexer/yacc/SimpleSourcePositionFactory.java
  46. +0 −29 core/src/main/java/org/jruby/lexer/yacc/SourcePositionFactory.java
  47. +3 −14 core/src/main/java/org/jruby/parser/Parser.java
  48. +5 −48 core/src/main/java/org/jruby/parser/ParserConfiguration.java
  49. +3 −5 core/src/main/java/org/jruby/parser/ParserSupport.java
  50. +1 −2 core/src/main/java/org/jruby/parser/RubyParser.java
  51. +1 −2 core/src/main/java/org/jruby/runtime/ThreadContext.java
  52. +34 −47 core/src/main/java/org/jruby/runtime/callsite/CachingCallSite.java
  53. +5 −1 core/src/main/java/org/jruby/runtime/invokedynamic/GlobalSite.java
  54. +24 −24 core/src/main/java/org/jruby/runtime/invokedynamic/InvocationLinker.java
  55. +16 −16 core/src/main/java/org/jruby/runtime/invokedynamic/InvokeDynamicSupport.java
  56. +48 −68 core/src/main/java/org/jruby/runtime/invokedynamic/JRubyCallSite.java
  57. +38 −38 core/src/main/java/org/jruby/runtime/invokedynamic/MathLinker.java
  58. +5 −1 core/src/main/java/org/jruby/runtime/invokedynamic/VariableSite.java
  59. +4 −1 core/src/main/java/org/jruby/truffle/TruffleBridgeImpl.java
  60. +0 −5 core/src/main/java/org/jruby/truffle/nodes/RubyCallNode.java
  61. +3 −40 core/src/main/java/org/jruby/truffle/nodes/RubyRootNode.java
  62. +33 −48 core/src/main/java/org/jruby/truffle/nodes/control/DoWhileNode.java
  63. +1 −1 core/src/main/java/org/jruby/truffle/nodes/control/WhileNode.java
  64. +5 −2 core/src/main/java/org/jruby/truffle/nodes/core/ArrayAllocationSite.java
  65. +4 −1 core/src/main/java/org/jruby/truffle/nodes/core/ArrayBuilderNode.java
  66. +65 −68 core/src/main/java/org/jruby/truffle/nodes/core/ArrayNodes.java
  67. +9 −10 core/src/main/java/org/jruby/truffle/nodes/core/BasicObjectNodes.java
  68. +24 −24 core/src/main/java/org/jruby/truffle/nodes/core/BignumNodes.java
  69. +1 −2 core/src/main/java/org/jruby/truffle/nodes/core/BindingNodes.java
  70. +5 −6 core/src/main/java/org/jruby/truffle/nodes/core/ClassNodes.java
  71. +6 −6 core/src/main/java/org/jruby/truffle/nodes/core/ComparableNodes.java
  72. +1 −2 core/src/main/java/org/jruby/truffle/nodes/core/ContinuationNodes.java
  73. +3 −3 core/src/main/java/org/jruby/truffle/nodes/core/CoreMethod.java
  74. +12 −7 core/src/main/java/org/jruby/truffle/nodes/core/CoreMethodNodeManager.java
  75. +4 −4 core/src/main/java/org/jruby/truffle/nodes/core/DirNodes.java
  76. +4 −4 core/src/main/java/org/jruby/truffle/nodes/core/EncodingNodes.java
  77. +3 −4 core/src/main/java/org/jruby/truffle/nodes/core/ExceptionNodes.java
  78. +4 −5 core/src/main/java/org/jruby/truffle/nodes/core/FalseClassNodes.java
  79. +3 −3 core/src/main/java/org/jruby/truffle/nodes/core/FiberNodes.java
  80. +16 −16 core/src/main/java/org/jruby/truffle/nodes/core/FileNodes.java
  81. +39 −39 core/src/main/java/org/jruby/truffle/nodes/core/FixnumNodes.java
  82. +22 −22 core/src/main/java/org/jruby/truffle/nodes/core/FloatNodes.java
  83. +2 −2 core/src/main/java/org/jruby/truffle/nodes/core/GCNodes.java
  84. +38 −38 core/src/main/java/org/jruby/truffle/nodes/core/HashNodes.java
  85. +2 −2 core/src/main/java/org/jruby/truffle/nodes/core/IONodes.java
  86. +60 −60 core/src/main/java/org/jruby/truffle/nodes/core/KernelNodes.java
  87. +2 −3 core/src/main/java/org/jruby/truffle/nodes/core/MainNodes.java
  88. +3 −4 core/src/main/java/org/jruby/truffle/nodes/core/MatchDataNodes.java
  89. +26 −26 core/src/main/java/org/jruby/truffle/nodes/core/MathNodes.java
  90. +60 −45 core/src/main/java/org/jruby/truffle/nodes/core/ModuleNodes.java
  91. +8 −9 core/src/main/java/org/jruby/truffle/nodes/core/NilClassNodes.java
  92. +5 −7 core/src/main/java/org/jruby/truffle/nodes/core/ObjectSpaceNodes.java
  93. +3 −5 core/src/main/java/org/jruby/truffle/nodes/core/ProcNodes.java
  94. +1 −1 core/src/main/java/org/jruby/truffle/nodes/core/ProcessNodes.java
  95. +13 −13 core/src/main/java/org/jruby/truffle/nodes/core/RangeNodes.java
  96. +7 −7 core/src/main/java/org/jruby/truffle/nodes/core/RegexpNodes.java
  97. +1 −1 core/src/main/java/org/jruby/truffle/nodes/core/SignalNodes.java
  98. +40 −41 core/src/main/java/org/jruby/truffle/nodes/core/StringNodes.java
  99. +7 −7 core/src/main/java/org/jruby/truffle/nodes/core/SymbolNodes.java
  100. +10 −10 core/src/main/java/org/jruby/truffle/nodes/core/ThreadNodes.java
  101. +4 −4 core/src/main/java/org/jruby/truffle/nodes/core/TimeNodes.java
  102. +4 −5 core/src/main/java/org/jruby/truffle/nodes/core/TrueClassNodes.java
  103. +7 −7 core/src/main/java/org/jruby/truffle/nodes/core/TruffleDebugNodes.java
  104. +1 −2 core/src/main/java/org/jruby/truffle/nodes/core/YieldingArrayCoreMethodNode.java
  105. +1 −2 core/src/main/java/org/jruby/truffle/nodes/core/YieldingHashCoreMethodNode.java
  106. +3 −3 core/src/main/java/org/jruby/truffle/nodes/debug/RubyASTProber.java
  107. +10 −9 core/src/main/java/org/jruby/truffle/nodes/dispatch/DispatchHeadNode.java
  108. +26 −2 core/src/main/java/org/jruby/truffle/nodes/dispatch/DispatchNode.java
  109. +0 −380 core/src/main/java/org/jruby/truffle/nodes/dispatch/GenericDispatchNode.java
  110. +206 −0 core/src/main/java/org/jruby/truffle/nodes/dispatch/UncachedDispatchNode.java
  111. +1 −1 core/src/main/java/org/jruby/truffle/nodes/dispatch/UnresolvedDispatchNode.java
  112. +2 −3 core/src/main/java/org/jruby/truffle/nodes/literal/HashLiteralNode.java
  113. +0 −10 core/src/main/java/org/jruby/truffle/nodes/literal/ObjectLiteralNode.java
  114. +5 −7 core/src/main/java/org/jruby/truffle/nodes/methods/ExceptionTranslatingNode.java
  115. +3 −4 core/src/main/java/org/jruby/truffle/nodes/methods/arguments/CheckArityNode.java
  116. +2 −4 core/src/main/java/org/jruby/truffle/nodes/methods/arguments/ShouldDestructureNode.java
  117. +2 −2 core/src/main/java/org/jruby/truffle/nodes/rubinius/ByteArrayNodes.java
  118. +1 −1 core/src/main/java/org/jruby/truffle/nodes/rubinius/ChannelNodes.java
  119. +1 −4 core/src/main/java/org/jruby/truffle/nodes/yield/YieldDispatchHeadNode.java
  120. +5 −0 core/src/main/java/org/jruby/truffle/runtime/DebugOperations.java
  121. +22 −0 core/src/main/java/org/jruby/truffle/runtime/ModuleChain.java
  122. +1 −6 core/src/main/java/org/jruby/truffle/runtime/RubyArguments.java
  123. +1 −41 core/src/main/java/org/jruby/truffle/runtime/RubyContext.java
  124. +0 −2 core/src/main/java/org/jruby/truffle/runtime/control/BreakException.java
  125. +0 −3 core/src/main/java/org/jruby/truffle/runtime/control/ContinuationReturnException.java
  126. +0 −2 core/src/main/java/org/jruby/truffle/runtime/control/NextException.java
  127. +0 −2 core/src/main/java/org/jruby/truffle/runtime/control/ReturnException.java
  128. +0 −4 core/src/main/java/org/jruby/truffle/runtime/control/ThrowException.java
  129. +1 −3 core/src/main/java/org/jruby/truffle/runtime/core/CoreLibrary.java
  130. +3 −3 core/src/main/java/org/jruby/truffle/runtime/core/RubyArray.java
  131. +8 −6 core/src/main/java/org/jruby/truffle/runtime/core/RubyHash.java
  132. +0 −11 core/src/main/java/org/jruby/truffle/runtime/core/RubyModule.java
  133. +1 −0 core/src/main/java/org/jruby/truffle/runtime/core/RubyProc.java
  134. +13 −45 core/src/main/java/org/jruby/truffle/runtime/methods/Arity.java
  135. +12 −12 core/src/main/java/org/jruby/truffle/translator/BodyTranslator.java
  136. +2 −2 core/src/main/java/org/jruby/truffle/translator/MethodTranslator.java
  137. +9 −14 core/src/main/java/org/jruby/truffle/translator/Translator.java
  138. +1 −1 core/src/main/java/org/jruby/truffle/translator/TranslatorDriver.java
  139. +1 −0 core/src/main/java/org/jruby/util/cli/ArgumentProcessor.java
  140. +2 −5 core/src/main/java/org/jruby/util/cli/Options.java
  141. +1 −1 core/src/test/java/org/jruby/lexer/yacc/ByteArrayLexerSourceTest.java
  142. +212 −0 core/src/test/java/org/jruby/parser/DetailedSourcePositionTest.java
  143. +2 −0 core/src/test/java/org/jruby/test/MainTestSuite.java
  144. +0 −2 spec/truffle/tags/core/module/ancestors_tags.txt
  145. +0 −1 spec/truffle/tags/core/module/append_features_tags.txt
  146. +0 −1 spec/truffle/tags/core/module/attr_accessor_tags.txt
  147. +0 −3 spec/truffle/tags/core/module/autoload_tags.txt
  148. +1 −4 spec/truffle/tags/core/module/class_eval_tags.txt
  149. +0 −1 spec/truffle/tags/core/module/class_variable_get_tags.txt
  150. +0 −1 spec/truffle/tags/core/module/class_variable_set_tags.txt
  151. +0 −1 spec/truffle/tags/core/module/class_variables_tags.txt
  152. +0 −5 spec/truffle/tags/core/module/comparison_tags.txt
  153. +0 −11 spec/truffle/tags/core/module/const_defined_tags.txt
  154. +0 −10 spec/truffle/tags/core/module/const_get_tags.txt
  155. +0 −1 spec/truffle/tags/core/module/const_missing_tags.txt
  156. +0 −6 spec/truffle/tags/core/module/define_method_tags.txt
  157. +0 −1 spec/truffle/tags/core/module/define_singleton_method_tags.txt
  158. +0 −1 spec/truffle/tags/core/module/eql_tags.txt
  159. +0 −1 spec/truffle/tags/core/module/equal_tags.txt
  160. +0 −1 spec/truffle/tags/core/module/equal_value_tags.txt
  161. +0 −1 spec/truffle/tags/core/module/extend_object_tags.txt
  162. +0 −1 spec/truffle/tags/core/module/freeze_tags.txt
  163. +0 −11 spec/truffle/tags/core/module/include_tags.txt
  164. +0 −5 spec/truffle/tags/core/module/instance_methods_tags.txt
  165. +0 −4 spec/truffle/tags/core/module/lte_tags.txt
  166. +0 −1 spec/truffle/tags/core/module/method_defined_tags.txt
  167. +0 −3 spec/truffle/tags/core/module/module_eval_tags.txt
  168. +0 −5 spec/truffle/tags/core/module/module_function_tags.txt
  169. +0 −2 spec/truffle/tags/core/module/name_tags.txt
  170. +0 −3 spec/truffle/tags/core/module/nesting_tags.txt
  171. +0 −1 spec/truffle/tags/core/module/new_tags.txt
  172. +0 −1 spec/truffle/tags/core/module/prepend_features_tags.txt
  173. +0 −5 spec/truffle/tags/core/module/prepend_tags.txt
  174. +0 −3 spec/truffle/tags/core/module/private_class_method_tags.txt
  175. +0 −4 spec/truffle/tags/core/module/private_instance_methods_tags.txt
  176. +0 −1 spec/truffle/tags/core/module/private_tags.txt
  177. +0 −1 spec/truffle/tags/core/module/protected_tags.txt
  178. +0 −2 spec/truffle/tags/core/module/public_class_method_tags.txt
  179. +0 −1 spec/truffle/tags/core/module/public_constant_tags.txt
  180. +0 −3 spec/truffle/tags/core/module/public_instance_methods_tags.txt
  181. +0 −2 spec/truffle/tags/core/module/remove_class_variable_tags.txt
  182. +0 −4 spec/truffle/tags/core/module/remove_const_tags.txt
  183. +0 −3 spec/truffle/tags/core/module/remove_method_tags.txt
  184. +0 −1 spec/truffle/tags/core/module/to_s_tags.txt
  185. +0 −6 spec/truffle/tags/core/module/undef_method_tags.txt
  186. +2 −0 spec/truffle/tags/language/encoding_tags.txt
  187. +1 −0 spec/truffle/tags/language/file_tags.txt
  188. +0 −1 spec/truffle/truffle.mspec
8 changes: 2 additions & 6 deletions core/src/main/java/org/jruby/Ruby.java
Original file line number Diff line number Diff line change
@@ -79,7 +79,6 @@
import org.jruby.internal.runtime.methods.JavaMethod;
import org.jruby.ir.Compiler;
import org.jruby.ir.IRManager;
import org.jruby.ir.IRScriptBody;
import org.jruby.ir.interpreter.Interpreter;
import org.jruby.ir.persistence.IRReader;
import org.jruby.ir.persistence.IRReaderFile;
@@ -158,7 +157,6 @@
import java.security.AccessControlException;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.HashMap;
@@ -172,7 +170,6 @@
import java.util.WeakHashMap;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
@@ -2673,7 +2670,7 @@ private Node parseFileFromMainAndGetAST(InputStream in, String file, DynamicScop

private Node parseFileAndGetAST(InputStream in, String file, DynamicScope scope, int lineNumber, boolean isFromMain) {
ParserConfiguration parserConfig =
new ParserConfiguration(this, lineNumber, false, false, true, isFromMain, config);
new ParserConfiguration(this, lineNumber, false, true, config);
setupSourceEncoding(parserConfig);
return parser.parse(file, in, scope, parserConfig);
}
@@ -2699,8 +2696,7 @@ private void setupSourceEncoding(ParserConfiguration parserConfig) {

public Node parseEval(String content, String file, DynamicScope scope, int lineNumber) {
addEvalParseToStats();
return parser.parse(file, content.getBytes(), scope, new ParserConfiguration(this,
lineNumber, false, false, false, false, config));
return parser.parse(file, content.getBytes(), scope, new ParserConfiguration(this, lineNumber, false, false, config));
}

@Deprecated
4 changes: 2 additions & 2 deletions core/src/main/java/org/jruby/ast/NilImplicitNode.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.jruby.ast;

import org.jruby.lexer.yacc.ISourcePosition;
import org.jruby.lexer.yacc.InvalidSourcePosition;

/**
* A node which behaves like a nil node, but is not actually present in the AST as a syntactical
@@ -11,7 +11,7 @@ public class NilImplicitNode extends NilNode implements InvisibleNode {
public static final NilImplicitNode NIL = new NilImplicitNode();

public NilImplicitNode() {
super(ISourcePosition.INVALID_POSITION);
super(InvalidSourcePosition.INSTANCE);
}

public boolean isNil() {
2 changes: 1 addition & 1 deletion core/src/main/java/org/jruby/ast/Node.java
Original file line number Diff line number Diff line change
@@ -126,7 +126,7 @@ public String toString(boolean indent, int indentation) {
builder.append(":").append(((INameNode) this).getName());
}

builder.append(" ").append(getPosition().getStartLine());
builder.append(" ").append(getPosition().getLine());

if (!childNodes().isEmpty() && indent) {
builder.append("\n");
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@

import java.util.List;
import org.jruby.ast.visitor.NodeVisitor;
import org.jruby.lexer.yacc.ISourcePosition;
import org.jruby.lexer.yacc.InvalidSourcePosition;

/**
* Marker to indicate that rather than assigning nil (where in multiple
@@ -14,7 +14,7 @@
*/
public class RequiredKeywordArgumentValueNode extends Node implements InvisibleNode {
public RequiredKeywordArgumentValueNode() {
super(ISourcePosition.INVALID_POSITION);
super(InvalidSourcePosition.INSTANCE);
}

@Override
4 changes: 1 addition & 3 deletions core/src/main/java/org/jruby/ast/util/SexpMaker.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package org.jruby.ast.util;

import java.io.File;
import java.nio.CharBuffer;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.atomic.AtomicLong;

import org.jruby.ast.AliasNode;
@@ -223,7 +221,7 @@ private static void processMethod(Builder sb, String methodName, Node argsNode,
sb.append("(method ").append(methodName).append(' ');
// JRUBY-4301, include filename and line in sexp
sb.append("(file ").append(new File(body.getPosition().getFile()).getName()).append(") ");
sb.append("(line ").append(body.getPosition().getStartLine()).append(") ");
sb.append("(line ").append(body.getPosition().getLine()).append(") ");
process(sb, argsNode);
sb.append(' ');
process(sb, body);
4 changes: 2 additions & 2 deletions core/src/main/java/org/jruby/common/RubyWarnings.java
Original file line number Diff line number Diff line change
@@ -69,7 +69,7 @@ public boolean isVerbose() {
public void warn(ID id, ISourcePosition position, String message) {
if (!runtime.warningsEnabled()) return;

warn(id, position.getFile(), position.getStartLine() + 1, message);
warn(id, position.getFile(), position.getLine() + 1, message);
}

/**
@@ -168,7 +168,7 @@ public void warning(ID id, ISourcePosition position, String message) {
if (!isVerbose()) return;
if (!runtime.warningsEnabled()) return;

warning(id, position.getFile(), position.getStartLine() + 1, message);
warning(id, position.getFile(), position.getLine() + 1, message);
}

/**
Original file line number Diff line number Diff line change
@@ -230,7 +230,7 @@ public String getFile() {

public int getLine() {
if (compiledMethod == null) initializeMethod();
return position.getStartLine();
return position.getLine();
}

public String[] getParameterList() {
@@ -306,7 +306,7 @@ public String getFile() {
}

public int getLine() {
return position.getStartLine();
return position.getLine();
}

public Object getScriptObject() {
Original file line number Diff line number Diff line change
@@ -282,7 +282,7 @@ public DynamicMethod getCompiledMethod(
scope,
callConfig,
position.getFile(),
position.getStartLine(),
position.getLine(),
methodNodes);
generatedClass = endCallWithBytes(invokerBytes, invokerPath);
} catch (LinkageError le) {
Original file line number Diff line number Diff line change
@@ -65,7 +65,7 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
boolean isTrace = runtime.hasEventHooks();
try {
if (isTrace) {
runtime.callEventHooks(context, RubyEvent.CALL, position.getFile(), position.getStartLine(), name, getImplementationClass());
runtime.callEventHooks(context, RubyEvent.CALL, position.getFile(), position.getLine(), name, getImplementationClass());
}
return (IRubyObject)method.invoke(null, $scriptObject, context, self, args, block);
} finally {
49 changes: 27 additions & 22 deletions core/src/main/java/org/jruby/ir/IRBuilder.java
Original file line number Diff line number Diff line change
@@ -467,7 +467,7 @@ public IRBuilder newIRBuilder(IRManager manager) {
public Node skipOverNewlines(IRScope s, Node n) {
if (n.getNodeType() == NodeType.NEWLINENODE) {
// Do not emit multiple line number instrs for the same line
int currLineNum = n.getPosition().getStartLine();
int currLineNum = n.getPosition().getLine();
if (currLineNum != _lastProcessedLineNum) {
if (RubyInstanceConfig.FULL_TRACE_ENABLED) {
addInstr(s, new TraceInstr(RubyEvent.LINE, methodNameFor(s), s.getFileName(), currLineNum));
@@ -504,7 +504,7 @@ public Operand build(Node node, IRScope s) {
}

public Operand buildLambda(LambdaNode node, IRScope s) {
IRClosure closure = new IRClosure(manager, s, node.getPosition().getStartLine(), node.getScope(), Arity.procArityOf(node.getArgs()), node.getArgumentType());
IRClosure closure = new IRClosure(manager, s, node.getPosition().getLine(), node.getScope(), Arity.procArityOf(node.getArgs()), node.getArgumentType());

// Create a new nested builder to ensure this gets its own IR builder state
// like the ensure block stack
@@ -990,7 +990,7 @@ public Operand buildCall(CallNode callNode, IRScope s) {
callInstr.setProcNew(true);
}

receiveBreakException(s, block, callInstr, callNode.getPosition().getStartLine());
receiveBreakException(s, block, callInstr, callNode.getPosition().getLine());
return callResult;
}

@@ -1107,7 +1107,7 @@ public Operand buildClass(ClassNode classNode, IRScope s) {
IRClassBody body = new IRClassBody(manager, s, className, classNode.getPosition().getLine(), classNode.getScope());
Variable tmpVar = addResultInstr(s, new DefineClassInstr(s.createTemporaryVariable(), body, container, superClass));

return buildModuleOrClassBody(s, tmpVar, body, classNode.getBodyNode(), classNode.getPosition().getStartLine());
return buildModuleOrClassBody(s, tmpVar, body, classNode.getBodyNode(), classNode.getPosition().getLine());
}

// class Foo; class << self; end; end
@@ -1118,7 +1118,7 @@ public Operand buildSClass(SClassNode sclassNode, IRScope s) {
IRModuleBody body = new IRMetaClassBody(manager, s, manager.getMetaClassName(), sclassNode.getPosition().getLine(), sclassNode.getScope());
Variable tmpVar = addResultInstr(s, new DefineMetaClassInstr(s.createTemporaryVariable(), receiver, body));

return buildModuleOrClassBody(s, tmpVar, body, sclassNode.getBodyNode(), sclassNode.getPosition().getStartLine());
return buildModuleOrClassBody(s, tmpVar, body, sclassNode.getBodyNode(), sclassNode.getPosition().getLine());
}

// @@c
@@ -1648,17 +1648,18 @@ public Operand buildDAsgn(final DAsgnNode dasgnNode, IRScope s) {
// because of the use of copyAndReturnValue method for literal objects.
}

private IRMethod defineNewMethod(MethodDefNode defNode, IRScope s, boolean isInstanceMethod) {
IRMethod method = new IRMethod(manager, s, defNode.getName(), isInstanceMethod, defNode.getPosition().getLine(), defNode.getScope());
// Called by defineMethod but called on a new builder so things like ensure block info recording
// do not get confused.
private IRMethod defineMethodInner(MethodDefNode defNode, IRMethod method, IRScope parent) {
if (RubyInstanceConfig.FULL_TRACE_ENABLED) {
addInstr(method, new TraceInstr(RubyEvent.CALL, defNode.getName(), s.getFileName(), defNode.getPosition().getStartLine()));
addInstr(method, new TraceInstr(RubyEvent.CALL, method.getName(), method.getFileName(), method.getLineNumber()));
}

addInstr(method, new ReceiveSelfInstr(method.getSelf()));

// Set %current_scope = <current-scope>
// Set %current_module = isInstanceMethod ? %self.metaclass : %self
int nearestScopeDepth = s.getNearestModuleReferencingScopeDepth();
int nearestScopeDepth = parent.getNearestModuleReferencingScopeDepth();

// Build IR for arguments (including the block arg)
receiveMethodArgs(defNode.getArgsNode(), method);
@@ -1673,19 +1674,23 @@ private IRMethod defineNewMethod(MethodDefNode defNode, IRScope s, boolean isIns
Operand rv = newIRBuilder(manager).build(defNode.getBodyNode(), method);

if (RubyInstanceConfig.FULL_TRACE_ENABLED) {
addInstr(method, new TraceInstr(RubyEvent.RETURN, defNode.getName(), s.getFileName(), -1));
addInstr(method, new TraceInstr(RubyEvent.RETURN, method.getName(), method.getFileName(), -1));
}

if (rv != null) addInstr(method, new ReturnInstr(rv));

// If the method can receive non-local returns
if (method.canReceiveNonlocalReturns()) {
handleNonlocalReturnInMethod(method);
}
if (method.canReceiveNonlocalReturns()) handleNonlocalReturnInMethod(method);

return method;
}

private IRMethod defineNewMethod(MethodDefNode defNode, IRScope parent, boolean isInstanceMethod) {
IRMethod method = new IRMethod(manager, parent, defNode.getName(), isInstanceMethod, defNode.getPosition().getLine(), defNode.getScope());

return newIRBuilder(manager).defineMethodInner(defNode, method, parent);
}

public Operand buildDefn(MethodDefNode node, IRScope s) { // Instance method
IRMethod method = defineNewMethod(node, s, true);
addInstr(s, new DefineInstanceMethodInstr(method));
@@ -2238,7 +2243,7 @@ public Operand buildFCall(FCallNode fcallNode, IRScope s) {
Operand block = setupCallClosure(fcallNode.getIterNode(), s);
Variable callResult = s.createTemporaryVariable();
CallInstr callInstr = CallInstr.create(CallType.FUNCTIONAL, callResult, new MethAddr(fcallNode.getName()), s.getSelf(), args.toArray(new Operand[args.size()]), block);
receiveBreakException(s, block, callInstr, fcallNode.getPosition().getStartLine());
receiveBreakException(s, block, callInstr, fcallNode.getPosition().getLine());
return callResult;
}

@@ -2355,14 +2360,14 @@ public Operand buildFor(ForNode forNode, IRScope s) {
Operand receiver = build(forNode.getIterNode(), s);
Operand forBlock = buildForIter(forNode, s);
CallInstr callInstr = new CallInstr(CallType.NORMAL, result, new MethAddr("each"), receiver, NO_ARGS, forBlock);
receiveBreakException(s, forBlock, callInstr, forNode.getPosition().getStartLine());
receiveBreakException(s, forBlock, callInstr, forNode.getPosition().getLine());

return result;
}

public Operand buildForIter(final ForNode forNode, IRScope s) {
// Create a new closure context
IRClosure closure = new IRFor(manager, s, forNode.getPosition().getStartLine(), forNode.getScope(), Arity.procArityOf(forNode.getVarNode()), forNode.getArgumentType());
IRClosure closure = new IRFor(manager, s, forNode.getPosition().getLine(), forNode.getScope(), Arity.procArityOf(forNode.getVarNode()), forNode.getArgumentType());

// Create a new nested builder to ensure this gets its own IR builder state
// like the ensure block stack
@@ -2513,7 +2518,7 @@ public Operand buildInstVar(InstVarNode node, IRScope s) {
}

public Operand buildIter(final IterNode iterNode, IRScope s) {
IRClosure closure = new IRClosure(manager, s, iterNode.getPosition().getStartLine(), iterNode.getScope(), Arity.procArityOf(iterNode.getVarNode()), iterNode.getArgumentType());
IRClosure closure = new IRClosure(manager, s, iterNode.getPosition().getLine(), iterNode.getScope(), Arity.procArityOf(iterNode.getVarNode()), iterNode.getArgumentType());

// Create a new nested builder to ensure this gets its own IR builder state
// like the ensure block stack
@@ -2655,7 +2660,7 @@ public Operand buildModule(ModuleNode moduleNode, IRScope s) {
IRModuleBody body = new IRModuleBody(manager, s, moduleName, moduleNode.getPosition().getLine(), moduleNode.getScope());
Variable tmpVar = addResultInstr(s, new DefineModuleInstr(s.createTemporaryVariable(), body, container));

return buildModuleOrClassBody(s, tmpVar, body, moduleNode.getBodyNode(), moduleNode.getPosition().getStartLine());
return buildModuleOrClassBody(s, tmpVar, body, moduleNode.getBodyNode(), moduleNode.getPosition().getLine());
}

public Operand buildMultipleAsgn(MultipleAsgnNode multipleAsgnNode, IRScope s) {
@@ -2944,7 +2949,7 @@ public Operand buildPostExe(PostExeNode postExeNode, IRScope s) {
IRScope topLevel = s.getTopLevelScope();
IRScope nearestLVarScope = s.getNearestTopLocalVariableScope();

IRClosure endClosure = new IRClosure(manager, s, postExeNode.getPosition().getStartLine(), nearestLVarScope.getStaticScope(), Arity.procArityOf(postExeNode.getVarNode()), postExeNode.getArgumentType(), "_END_", true);
IRClosure endClosure = new IRClosure(manager, s, postExeNode.getPosition().getLine(), nearestLVarScope.getStaticScope(), Arity.procArityOf(postExeNode.getVarNode()), postExeNode.getArgumentType(), "_END_", true);
// Create a new nested builder to ensure this gets its own IR builder state
// like the ensure block stack
IRBuilder closureBuilder = newIRBuilder(manager);
@@ -2964,7 +2969,7 @@ public Operand buildPostExe(PostExeNode postExeNode, IRScope s) {
}

public Operand buildPreExe(PreExeNode preExeNode, IRScope s) {
IRClosure beginClosure = new IRFor(manager, s, preExeNode.getPosition().getStartLine(), s.getTopLevelScope().getStaticScope(), Arity.procArityOf(preExeNode.getVarNode()), preExeNode.getArgumentType(), "_BEGIN_");
IRClosure beginClosure = new IRFor(manager, s, preExeNode.getPosition().getLine(), s.getTopLevelScope().getStaticScope(), Arity.procArityOf(preExeNode.getVarNode()), preExeNode.getArgumentType(), "_BEGIN_");
// Create a new nested builder to ensure this gets its own IR builder state
// like the ensure block stack
IRBuilder closureBuilder = newIRBuilder(manager);
@@ -3299,7 +3304,7 @@ public Operand buildSuper(SuperNode superNode, IRScope s) {
List<Operand> args = setupCallArgs(superNode.getArgsNode(), s);
Operand block = setupCallClosure(superNode.getIterNode(), s);
if (block == null) block = getImplicitBlockArg(s);
return buildSuperInstr(s, block, args.toArray(new Operand[args.size()]), superNode.getPosition().getStartLine());
return buildSuperInstr(s, block, args.toArray(new Operand[args.size()]), superNode.getPosition().getLine());
}

private Operand buildSuperInScriptBody(IRScope s) {
@@ -3490,7 +3495,7 @@ public Operand buildZSuper(ZSuperNode zsuperNode, IRScope s) {
Operand block = setupCallClosure(zsuperNode.getIterNode(), s);
if (block == null) block = getImplicitBlockArg(s);

int linenumber = zsuperNode.getPosition().getStartLine();
int linenumber = zsuperNode.getPosition().getLine();

// Enebo:ZSuper in for (or nested for) can be statically resolved like method but it needs
// to fixup depth.
8 changes: 4 additions & 4 deletions core/src/main/java/org/jruby/ir/IRManager.java
Original file line number Diff line number Diff line change
@@ -17,10 +17,10 @@
/**
*/
public class IRManager {
public static String SAFE_COMPILER_PASSES = "";
public static String DEFAULT_COMPILER_PASSES = "OptimizeTempVarsPass,LocalOptimizationPass";
public static String DEFAULT_JIT_PASSES = "DeadCodeElimination,AddLocalVarLoadStoreInstructions,OptimizeDynScopesPass,AddCallProtocolInstructions,EnsureTempsAssigned";
public static String DEFAULT_INLINING_COMPILER_PASSES = "LocalOptimizationPass";
public static final String SAFE_COMPILER_PASSES = "";
public static final String DEFAULT_COMPILER_PASSES = "OptimizeTempVarsPass,LocalOptimizationPass";
public static final String DEFAULT_JIT_PASSES = "DeadCodeElimination,AddLocalVarLoadStoreInstructions,OptimizeDynScopesPass,AddCallProtocolInstructions,EnsureTempsAssigned";
public static final String DEFAULT_INLINING_COMPILER_PASSES = "LocalOptimizationPass";

private int dummyMetaClassCount = 0;
private final IRModuleBody object = new IRClassBody(this, null, "Object", "", 0, null);
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.jruby.ir.instructions;

import org.jruby.RubyModule;
import org.jruby.ir.IRScope;
import org.jruby.ir.IRVisitor;
import org.jruby.ir.Operation;
import org.jruby.ir.operands.Boolean;
@@ -16,6 +17,8 @@
import java.util.Arrays;
import java.util.Map;

import static org.jruby.ir.IRFlags.REQUIRES_FRAME;

public class RuntimeHelperCall extends Instr implements ResultInstr {
public enum Methods {
HANDLE_PROPAGATE_BREAK, HANDLE_NONLOCAL_RETURN, HANDLE_BREAK_AND_RETURNS_IN_LAMBDA,
@@ -65,6 +68,25 @@ public void simplifyOperands(Map<Operand, Operand> valueMap, boolean force) {
}
}

/**
* Does this instruction do anything the scope is interested in?
*
* @param scope
* @return true if it modified the scope.
*/
@Override
public boolean computeScopeFlags(IRScope scope) {
boolean modifiedScope = false;

// FIXME: Impl of this helper uses frame class. Determine if we can do this another way.
if (helperMethod == Methods.IS_DEFINED_SUPER) {
modifiedScope = true;
scope.getFlags().add(REQUIRES_FRAME);
}

return modifiedScope;
}

@Override
public Instr clone(CloneInfo ii) {
// SSS FIXME: array of args cloning should be part of utility class
Loading