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: ba90907ce95a
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 7032f3455e17
Choose a head ref
  • 3 commits
  • 173 files changed
  • 1 contributor

Commits on Aug 17, 2015

  1. Copy the full SHA
    cbae96e View commit details
  2. Copy the full SHA
    443ebfb View commit details
  3. Copy the full SHA
    7032f34 View commit details
Showing with 2,539 additions and 2,893 deletions.
  1. +46 −72 truffle/src/main/java/org/jruby/truffle/nodes/RubyGuards.java
  2. +6 −8 truffle/src/main/java/org/jruby/truffle/nodes/RubyNode.java
  3. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/StringCachingGuards.java
  4. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/arguments/ReadKeywordRestArgumentNode.java
  5. +4 −5 truffle/src/main/java/org/jruby/truffle/nodes/cast/CmpIntNode.java
  6. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/coerce/NameToJavaStringNode.java
  7. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/constants/GetConstantNode.java
  8. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/constants/LookupConstantNode.java
  9. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/constants/LookupConstantWithLexicalScopeNode.java
  10. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/constants/WriteConstantNode.java
  11. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/control/TraceNode.java
  12. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/conversion/ToJavaStringNode.java
  13. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/conversion/ToSymbolNode.java
  14. +16 −27 truffle/src/main/java/org/jruby/truffle/nodes/core/BasicObjectNodes.java
  15. +58 −65 truffle/src/main/java/org/jruby/truffle/nodes/core/BignumNodes.java
  16. +27 −42 truffle/src/main/java/org/jruby/truffle/nodes/core/BindingNodes.java
  17. +36 −47 truffle/src/main/java/org/jruby/truffle/nodes/core/ClassNodes.java
  18. +3 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/CoreMethodNodeManager.java
  19. +3 −14 truffle/src/main/java/org/jruby/truffle/nodes/core/EncodingConverterNodes.java
  20. +19 −34 truffle/src/main/java/org/jruby/truffle/nodes/core/EncodingNodes.java
  21. +9 −25 truffle/src/main/java/org/jruby/truffle/nodes/core/ExceptionNodes.java
  22. +26 −33 truffle/src/main/java/org/jruby/truffle/nodes/core/FiberNodes.java
  23. +14 −13 truffle/src/main/java/org/jruby/truffle/nodes/core/FloatNodes.java
  24. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/IntegerNodes.java
  25. +4 −3 truffle/src/main/java/org/jruby/truffle/nodes/core/InterpolatedRegexpNode.java
  26. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/InterpolatedStringNode.java
  27. +43 −42 truffle/src/main/java/org/jruby/truffle/nodes/core/KernelNodes.java
  28. +59 −66 truffle/src/main/java/org/jruby/truffle/nodes/core/MatchDataNodes.java
  29. +15 −14 truffle/src/main/java/org/jruby/truffle/nodes/core/MathNodes.java
  30. +17 −28 truffle/src/main/java/org/jruby/truffle/nodes/core/MethodNodes.java
  31. +54 −61 truffle/src/main/java/org/jruby/truffle/nodes/core/ModuleNodes.java
  32. +8 −15 truffle/src/main/java/org/jruby/truffle/nodes/core/MutexNodes.java
  33. +6 −5 truffle/src/main/java/org/jruby/truffle/nodes/core/ObjectSpaceNodes.java
  34. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/PointerGuards.java
  35. +29 −68 truffle/src/main/java/org/jruby/truffle/nodes/core/ProcNodes.java
  36. +3 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/ProcessNodes.java
  37. +10 −18 truffle/src/main/java/org/jruby/truffle/nodes/core/QueueNodes.java
  38. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/RaiseIfFrozenNode.java
  39. +41 −48 truffle/src/main/java/org/jruby/truffle/nodes/core/RangeNodes.java
  40. +3 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/RegexpGuards.java
  41. +45 −60 truffle/src/main/java/org/jruby/truffle/nodes/core/RegexpNodes.java
  42. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/SetTopLevelBindingNode.java
  43. +14 −27 truffle/src/main/java/org/jruby/truffle/nodes/core/SizedQueueNodes.java
  44. +6 −5 truffle/src/main/java/org/jruby/truffle/nodes/core/StringGuards.java
  45. +159 −177 truffle/src/main/java/org/jruby/truffle/nodes/core/StringNodes.java
  46. +8 −32 truffle/src/main/java/org/jruby/truffle/nodes/core/SymbolNodes.java
  47. +5 −11 truffle/src/main/java/org/jruby/truffle/nodes/core/ThreadBacktraceLocationNodes.java
  48. +49 −55 truffle/src/main/java/org/jruby/truffle/nodes/core/ThreadNodes.java
  49. +9 −23 truffle/src/main/java/org/jruby/truffle/nodes/core/TimeNodes.java
  50. +3 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/TruffleInteropNodes.java
  51. +4 −3 truffle/src/main/java/org/jruby/truffle/nodes/core/TrufflePrimitiveNodes.java
  52. +14 −25 truffle/src/main/java/org/jruby/truffle/nodes/core/UnboundMethodNodes.java
  53. +18 −17 truffle/src/main/java/org/jruby/truffle/nodes/core/array/AppendManyNode.java
  54. +12 −11 truffle/src/main/java/org/jruby/truffle/nodes/core/array/AppendOneNode.java
  55. +15 −14 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayBuilderNode.java
  56. +5 −4 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayConcatNode.java
  57. +12 −11 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayDropTailNode.java
  58. +9 −8 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayDupNode.java
  59. +9 −8 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayGetTailNode.java
  60. +7 −6 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayGuards.java
  61. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayLiteralNode.java
  62. +476 −491 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayNodes.java
  63. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayPushNode.java
  64. +6 −5 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayReadNormalizedNode.java
  65. +15 −14 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayReadSliceNormalizedNode.java
  66. +9 −8 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArraySliceNode.java
  67. +38 −37 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayWriteNormalizedNode.java
  68. +9 −8 truffle/src/main/java/org/jruby/truffle/nodes/core/array/EnsureCapacityArrayNode.java
  69. +8 −7 truffle/src/main/java/org/jruby/truffle/nodes/core/array/GeneralizeArrayNode.java
  70. +7 −6 truffle/src/main/java/org/jruby/truffle/nodes/core/array/PopOneNode.java
  71. +21 −20 truffle/src/main/java/org/jruby/truffle/nodes/core/fixnum/FixnumNodes.java
  72. +7 −6 truffle/src/main/java/org/jruby/truffle/nodes/core/hash/HashGuards.java
  73. +109 −164 truffle/src/main/java/org/jruby/truffle/nodes/core/hash/HashNodes.java
  74. +3 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/hash/LookupEntryNode.java
  75. +10 −9 truffle/src/main/java/org/jruby/truffle/nodes/core/hash/SetNode.java
  76. +5 −6 truffle/src/main/java/org/jruby/truffle/nodes/dispatch/CachedBoxedDispatchNode.java
  77. +3 −4 truffle/src/main/java/org/jruby/truffle/nodes/dispatch/CachedBoxedMethodMissingDispatchNode.java
  78. +3 −4 truffle/src/main/java/org/jruby/truffle/nodes/dispatch/CachedBoxedReturnMissingDispatchNode.java
  79. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/dispatch/CachedBoxedSymbolDispatchNode.java
  80. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/dispatch/CachedDispatchNode.java
  81. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/dispatch/CachedUnboxedDispatchNode.java
  82. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/dispatch/RubyCallNode.java
  83. +5 −6 truffle/src/main/java/org/jruby/truffle/nodes/dispatch/UnresolvedDispatchNode.java
  84. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/exceptions/TopLevelRaiseHandler.java
  85. +89 −100 truffle/src/main/java/org/jruby/truffle/nodes/ext/BigDecimalNodes.java
  86. +8 −14 truffle/src/main/java/org/jruby/truffle/nodes/ext/DigestNodes.java
  87. +5 −5 truffle/src/main/java/org/jruby/truffle/nodes/ext/ZlibNodes.java
  88. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/globals/CheckStdoutVariableTypeNode.java
  89. +6 −7 truffle/src/main/java/org/jruby/truffle/nodes/interop/InteropNode.java
  90. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/interop/RubyToIndexLabelNode.java
  91. +5 −6 truffle/src/main/java/org/jruby/truffle/nodes/literal/RangeLiteralNode.java
  92. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/literal/StringLiteralNode.java
  93. +4 −3 truffle/src/main/java/org/jruby/truffle/nodes/methods/AddMethodNode.java
  94. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/methods/AliasNode.java
  95. +6 −8 truffle/src/main/java/org/jruby/truffle/nodes/methods/ExceptionTranslatingNode.java
  96. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/methods/LookupMethodNode.java
  97. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/methods/UndefNode.java
  98. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/objects/AllocateObjectNode.java
  99. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/objects/DefineOrGetClassNode.java
  100. +6 −5 truffle/src/main/java/org/jruby/truffle/nodes/objects/DefineOrGetModuleNode.java
  101. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/objects/MetaClassNode.java
  102. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/objects/OpenModuleNode.java
  103. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/objects/ReadClassVariableNode.java
  104. +5 −5 truffle/src/main/java/org/jruby/truffle/nodes/objects/SingletonClassNode.java
  105. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/objects/TaintNode.java
  106. +5 −5 truffle/src/main/java/org/jruby/truffle/nodes/objects/WriteInstanceVariableNode.java
  107. +3 −2 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/BignumPrimitiveNodes.java
  108. +12 −18 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/ByteArrayNodes.java
  109. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/ChannelPrimitiveNodes.java
  110. +10 −13 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/DirPrimitiveNodes.java
  111. +13 −12 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/EncodingConverterPrimitiveNodes.java
  112. +3 −4 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/EncodingPrimitiveNodes.java
  113. +3 −2 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/FixnumPrimitiveNodes.java
  114. +14 −37 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/IOBufferPrimitiveNodes.java
  115. +26 −40 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/IOPrimitiveNodes.java
  116. +2 −13 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/PointerNodes.java
  117. +26 −25 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/PointerPrimitiveNodes.java
  118. +40 −39 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/PosixNodes.java
  119. +8 −7 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/RegexpPrimitiveNodes.java
  120. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/RubiniusPrimitiveCallConstructor.java
  121. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/RubiniusTypeNodes.java
  122. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/StatPrimitiveNodes.java
  123. +60 −58 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/StringPrimitiveNodes.java
  124. +5 −4 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/ThreadPrimitiveNodes.java
  125. +6 −5 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/TimePrimitiveNodes.java
  126. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/UndefinedPrimitiveNodes.java
  127. +6 −5 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/VMPrimitiveNodes.java
  128. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/supercall/LookupSuperMethodNode.java
  129. +4 −4 truffle/src/main/java/org/jruby/truffle/nodes/yield/CachedYieldDispatchNode.java
  130. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/yield/GeneralYieldDispatchNode.java
  131. +7 −10 truffle/src/main/java/org/jruby/truffle/nodes/yield/YieldDispatchHeadNode.java
  132. +2 −2 truffle/src/main/java/org/jruby/truffle/pack/nodes/format/FormatIntegerNode.java
  133. +2 −2 truffle/src/main/java/org/jruby/truffle/pack/nodes/type/ToLongNode.java
  134. +5 −5 truffle/src/main/java/org/jruby/truffle/pack/nodes/type/ToStringNode.java
  135. +3 −3 truffle/src/main/java/org/jruby/truffle/pack/nodes/write/WriteBERNode.java
  136. +35 −36 truffle/src/main/java/org/jruby/truffle/runtime/ModuleOperations.java
  137. +2 −2 truffle/src/main/java/org/jruby/truffle/runtime/RubyConstant.java
  138. +4 −3 truffle/src/main/java/org/jruby/truffle/runtime/RubyContext.java
  139. +12 −16 truffle/src/main/java/org/jruby/truffle/runtime/RubyObjectType.java
  140. +3 −4 truffle/src/main/java/org/jruby/truffle/runtime/backtrace/DebugBacktraceFormatter.java
  141. +2 −3 truffle/src/main/java/org/jruby/truffle/runtime/backtrace/ImplementationDebugBacktraceFormatter.java
  142. +5 −6 truffle/src/main/java/org/jruby/truffle/runtime/backtrace/MRIBacktraceFormatter.java
  143. +144 −139 truffle/src/main/java/org/jruby/truffle/runtime/core/CoreLibrary.java
  144. +27 −27 truffle/src/main/java/org/jruby/truffle/runtime/core/ModuleFields.java
  145. +4 −3 truffle/src/main/java/org/jruby/truffle/runtime/core/StringCodeRangeableWrapper.java
  146. +13 −13 truffle/src/main/java/org/jruby/truffle/runtime/core/SymbolCodeRangeableWrapper.java
  147. +3 −4 truffle/src/main/java/org/jruby/truffle/runtime/core/SymbolTable.java
  148. +14 −13 truffle/src/main/java/org/jruby/truffle/runtime/hash/BucketsStrategy.java
  149. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/ArrayLayout.java
  150. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/BignumLayout.java
  151. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/ClassLayout.java
  152. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/EncodingLayout.java
  153. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/HashLayout.java
  154. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/IntegerFixnumRangeLayout.java
  155. +50 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/Layouts.java
  156. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/LongFixnumRangeLayout.java
  157. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/MatchDataLayout.java
  158. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/MethodLayout.java
  159. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/ModuleLayout.java
  160. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/ObjectRangeLayout.java
  161. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/ProcLayout.java
  162. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/RegexpLayout.java
  163. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/StringLayout.java
  164. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/SymbolLayout.java
  165. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/layouts/UnboundMethodLayout.java
  166. +3 −4 truffle/src/main/java/org/jruby/truffle/runtime/methods/InternalMethod.java
  167. +2 −2 truffle/src/main/java/org/jruby/truffle/runtime/subsystems/AtExitManager.java
  168. +6 −6 truffle/src/main/java/org/jruby/truffle/runtime/subsystems/FeatureManager.java
  169. +2 −1 truffle/src/main/java/org/jruby/truffle/runtime/subsystems/FiberManager.java
  170. +2 −2 truffle/src/main/java/org/jruby/truffle/runtime/subsystems/SimpleShell.java
  171. +2 −2 truffle/src/main/java/org/jruby/truffle/runtime/subsystems/ThreadManager.java
  172. +2 −1 truffle/src/main/java/org/jruby/truffle/translator/BodyTranslator.java
  173. +2 −2 truffle/src/main/java/org/jruby/truffle/translator/TranslatorDriver.java
118 changes: 46 additions & 72 deletions truffle/src/main/java/org/jruby/truffle/nodes/RubyGuards.java
Original file line number Diff line number Diff line change
@@ -11,14 +11,12 @@

import com.oracle.truffle.api.interop.TruffleObject;
import com.oracle.truffle.api.object.DynamicObject;
import org.jruby.truffle.nodes.core.*;
import org.jruby.truffle.nodes.core.array.ArrayNodes;
import org.jruby.truffle.nodes.core.hash.HashNodes;
import org.jruby.truffle.nodes.ext.BigDecimalNodes;
import org.jruby.truffle.nodes.rubinius.ByteArrayNodes;
import org.jruby.truffle.nodes.rubinius.PointerNodes;
import org.jruby.truffle.runtime.NotProvided;
import org.jruby.truffle.runtime.ThreadLocalObject;
import org.jruby.truffle.runtime.layouts.Layouts;
import org.jruby.truffle.runtime.layouts.ThreadLayoutImpl;
import org.jruby.truffle.runtime.layouts.TimeLayoutImpl;
import org.jruby.truffle.runtime.layouts.rubinius.ByteArrayLayoutImpl;

public abstract class RubyGuards {

@@ -43,203 +41,179 @@ public static boolean isDouble(Object value) {
// Ruby types

public static boolean isRubyBasicObject(Object object) {
return BasicObjectNodes.BASIC_OBJECT_LAYOUT.isBasicObject(object);
return Layouts.BASIC_OBJECT.isBasicObject(object);
}

public static boolean isRubyBignum(Object value) {
return (value instanceof DynamicObject) && isRubyBignum((DynamicObject) value);
return Layouts.BIGNUM.isBignum(value);
}

public static boolean isRubyBignum(DynamicObject value) {
return BignumNodes.BIGNUM_LAYOUT.isBignum(value);
return Layouts.BIGNUM.isBignum(value);
}

public static boolean isRubyBigDecimal(DynamicObject value) {
return BigDecimalNodes.BIG_DECIMAL_LAYOUT.isBigDecimal(value);
return Layouts.BIG_DECIMAL.isBigDecimal(value);
}

public static boolean isIntegerFixnumRange(Object object) {
return (object instanceof DynamicObject) && isIntegerFixnumRange((DynamicObject) object);
return Layouts.INTEGER_FIXNUM_RANGE.isIntegerFixnumRange(object);
}

public static boolean isIntegerFixnumRange(DynamicObject object) {
return RangeNodes.INTEGER_FIXNUM_RANGE_LAYOUT.isIntegerFixnumRange(object);
return Layouts.INTEGER_FIXNUM_RANGE.isIntegerFixnumRange(object);
}

public static boolean isLongFixnumRange(Object object) {
return (object instanceof DynamicObject) && isLongFixnumRange((DynamicObject) object);
return Layouts.LONG_FIXNUM_RANGE.isLongFixnumRange(object);
}

public static boolean isLongFixnumRange(DynamicObject object) {
return RangeNodes.LONG_FIXNUM_RANGE_LAYOUT.isLongFixnumRange(object);
return Layouts.LONG_FIXNUM_RANGE.isLongFixnumRange(object);
}

public static boolean isObjectRange(Object object) {
return (object instanceof DynamicObject) && isObjectRange((DynamicObject) object);
return Layouts.OBJECT_RANGE.isObjectRange(object);
}

public static boolean isObjectRange(DynamicObject object) {
return RangeNodes.OBJECT_RANGE_LAYOUT.isObjectRange(object);
return Layouts.OBJECT_RANGE.isObjectRange(object);
}

public static boolean isRubyRange(Object value) {
return isIntegerFixnumRange(value) || isLongFixnumRange(value) || isObjectRange(value);
}

public static boolean isRubyArray(Object value) {
return (value instanceof DynamicObject) && isRubyArray((DynamicObject) value);
return Layouts.ARRAY.isArray(value);
}

public static boolean isRubyArray(DynamicObject value) {
return ArrayNodes.ARRAY_LAYOUT.isArray(value);
return Layouts.ARRAY.isArray(value);
}

public static boolean isRubyBinding(DynamicObject object) {
return BindingNodes.BINDING_LAYOUT.isBinding(object);
return Layouts.BINDING.isBinding(object);
}

public static boolean isRubyClass(Object value) {
return (value instanceof DynamicObject) && isRubyClass((DynamicObject) value);
return Layouts.CLASS.isClass(value);
}

public static boolean isRubyClass(DynamicObject value) {
return ClassNodes.CLASS_LAYOUT.isClass(value);
return Layouts.CLASS.isClass(value);
}

public static boolean isRubyHash(Object value) {
return (value instanceof DynamicObject) && isRubyHash((DynamicObject) value);
return Layouts.HASH.isHash(value);
}

public static boolean isRubyHash(DynamicObject value) {
return HashNodes.HASH_LAYOUT.isHash(value);
return Layouts.HASH.isHash(value);
}

public static boolean isRubyModule(Object value) {
return (value instanceof DynamicObject) && isRubyModule((DynamicObject) value);
return Layouts.MODULE.isModule(value);
}

public static boolean isRubyModule(DynamicObject value) {
return ModuleNodes.MODULE_LAYOUT.isModule(value);
return Layouts.MODULE.isModule(value);
}

public static boolean isRubyRegexp(Object value) {
return (value instanceof DynamicObject) && isRubyRegexp((DynamicObject) value);
return Layouts.REGEXP.isRegexp(value);
}

public static boolean isRubyRegexp(DynamicObject value) {
return RegexpNodes.REGEXP_LAYOUT.isRegexp(value);
return Layouts.REGEXP.isRegexp(value);
}

public static boolean isRubyString(Object value) {
return (value instanceof DynamicObject) && isRubyString((DynamicObject) value);
return Layouts.STRING.isString(value);
}

public static boolean isRubyString(DynamicObject value) {
return StringNodes.STRING_LAYOUT.isString(value);
return Layouts.STRING.isString(value);
}

public static boolean isRubyEncoding(Object object) {
return (object instanceof DynamicObject) && isRubyEncoding((DynamicObject) object);
return Layouts.ENCODING.isEncoding(object);
}

public static boolean isRubyEncoding(DynamicObject object) {
return EncodingNodes.ENCODING_LAYOUT.isEncoding(object);
return Layouts.ENCODING.isEncoding(object);
}

public static boolean isRubySymbol(Object value) {
return (value instanceof DynamicObject) && isRubySymbol((DynamicObject) value);
return Layouts.SYMBOL.isSymbol(value);
}

public static boolean isRubySymbol(DynamicObject value) {
return SymbolNodes.SYMBOL_LAYOUT.isSymbol(value);
return Layouts.SYMBOL.isSymbol(value);
}

public static boolean isRubyMethod(Object value) {
return (value instanceof DynamicObject) && isRubyMethod((DynamicObject) value);
return Layouts.METHOD.isMethod(value);
}

public static boolean isRubyMethod(DynamicObject value) {
return MethodNodes.METHOD_LAYOUT.isMethod(value);
return Layouts.METHOD.isMethod(value);
}

public static boolean isRubyUnboundMethod(Object value) {
return (value instanceof DynamicObject) && isRubyUnboundMethod((DynamicObject) value);
return Layouts.UNBOUND_METHOD.isUnboundMethod(value);
}

public static boolean isRubyUnboundMethod(DynamicObject value) {
return UnboundMethodNodes.UNBOUND_METHOD_LAYOUT.isUnboundMethod(value);
}

public static boolean isRubyMutex(DynamicObject value) {
return MutexNodes.MUTEX_LAYOUT.isMutex(value);
return Layouts.UNBOUND_METHOD.isUnboundMethod(value);
}

public static boolean isDynamicObject(Object value) {
return value instanceof DynamicObject;
}

public static boolean isRubyPointer(Object value) {
return (value instanceof DynamicObject) && isRubyPointer((DynamicObject) value);
}

public static boolean isRubyPointer(DynamicObject value) {
return PointerNodes.POINTER_LAYOUT.isPointer(value);
}

public static boolean isRubiniusByteArray(Object value) {
return (value instanceof DynamicObject) && isRubiniusByteArray((DynamicObject) value);
return Layouts.POINTER.isPointer(value);
}

public static boolean isRubiniusByteArray(DynamicObject value) {
return ByteArrayNodes.BYTE_ARRAY_LAYOUT.isByteArray(value);
return Layouts.BYTE_ARRAY.isByteArray(value);
}

public static boolean isRubyProc(Object object) {
return (object instanceof DynamicObject) && isRubyProc((DynamicObject) object);
return Layouts.PROC.isProc(object);
}

public static boolean isRubyProc(DynamicObject object) {
return ProcNodes.PROC_LAYOUT.isProc(object);
return Layouts.PROC.isProc(object);
}

public static boolean isRubyEncodingConverter(DynamicObject encodingConverter) {
return EncodingConverterNodes.ENCODING_CONVERTER_LAYOUT.isEncodingConverter(encodingConverter);
return Layouts.ENCODING_CONVERTER.isEncodingConverter(encodingConverter);
}

public static boolean isRubyTime(DynamicObject object) {
return TimeNodes.TIME_LAYOUT.isTime(object);
}

public static boolean isRubyException(Object value) {
return (value instanceof DynamicObject) && isRubyException((DynamicObject) value);
return Layouts.TIME.isTime(object);
}

public static boolean isRubyException(DynamicObject object) {
return ExceptionNodes.EXCEPTION_LAYOUT.isException(object);
}

public static boolean isRubyFiber(Object object) {
return (object instanceof DynamicObject) && isRubyFiber((DynamicObject) object);
return Layouts.EXCEPTION.isException(object);
}

public static boolean isRubyFiber(DynamicObject object) {
return FiberNodes.FIBER_LAYOUT.isFiber(object);
}

public static boolean isRubyThread(Object object) {
return (object instanceof DynamicObject) && isRubyThread((DynamicObject) object);
return Layouts.FIBER.isFiber(object);
}

public static boolean isRubyThread(DynamicObject object) {
return ThreadNodes.THREAD_LAYOUT.isThread(object);
return ThreadLayoutImpl.INSTANCE.isThread(object);
}

public static boolean isRubyMatchData(Object object) {
return (object instanceof DynamicObject) && isRubyMatchData((DynamicObject) object);
return Layouts.MATCH_DATA.isMatchData(object);
}

public static boolean isRubyMatchData(DynamicObject object) {
return MatchDataNodes.MATCH_DATA_LAYOUT.isMatchData(object);
return Layouts.MATCH_DATA.isMatchData(object);
}

// Internal types
14 changes: 6 additions & 8 deletions truffle/src/main/java/org/jruby/truffle/nodes/RubyNode.java
Original file line number Diff line number Diff line change
@@ -24,16 +24,14 @@
import jnr.ffi.provider.MemoryManager;
import jnr.posix.POSIX;
import org.jcodings.Encoding;
import org.jruby.truffle.nodes.core.BignumNodes;
import org.jruby.truffle.nodes.core.BindingNodes;
import org.jruby.truffle.nodes.core.ClassNodes;
import org.jruby.truffle.nodes.core.StringNodes;
import org.jruby.truffle.nodes.core.array.ArrayNodes;
import org.jruby.truffle.nodes.dispatch.DispatchNode;
import org.jruby.truffle.nodes.instrument.RubyWrapperNode;
import org.jruby.truffle.runtime.NotProvided;
import org.jruby.truffle.runtime.RubyArguments;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.layouts.Layouts;
import org.jruby.truffle.runtime.sockets.NativeSockets;
import org.jruby.util.ByteList;

@@ -194,19 +192,19 @@ protected DynamicObject createString(ByteList bytes) {
}

protected DynamicObject createEmptyArray() {
return ArrayNodes.ARRAY_LAYOUT.createArray(getContext().getCoreLibrary().getArrayFactory(), null, 0);
return Layouts.ARRAY.createArray(getContext().getCoreLibrary().getArrayFactory(), null, 0);
}

protected DynamicObject createArrayWith(Object... store) {
return ArrayNodes.ARRAY_LAYOUT.createArray(getContext().getCoreLibrary().getArrayFactory(), store, store.length);
return Layouts.ARRAY.createArray(getContext().getCoreLibrary().getArrayFactory(), store, store.length);
}

protected DynamicObject createArray(Object store, int size) {
return ArrayNodes.ARRAY_LAYOUT.createArray(getContext().getCoreLibrary().getArrayFactory(), store, size);
return Layouts.ARRAY.createArray(getContext().getCoreLibrary().getArrayFactory(), store, size);
}

protected DynamicObject createBignum(BigInteger value) {
return BignumNodes.BIGNUM_LAYOUT.createBignum(getContext().getCoreLibrary().getBignumFactory(), value);
return Layouts.BIGNUM.createBignum(getContext().getCoreLibrary().getBignumFactory(), value);
}

protected POSIX posix() {
@@ -224,7 +222,7 @@ protected static int getCacheLimit() {
// Helper methods for caching

protected DynamicObjectFactory getInstanceFactory(DynamicObject rubyClass) {
return ClassNodes.CLASS_LAYOUT.getInstanceFactory(rubyClass);
return Layouts.CLASS.getInstanceFactory(rubyClass);
}

// Instrumentation
Original file line number Diff line number Diff line change
@@ -11,22 +11,22 @@
package org.jruby.truffle.nodes;

import com.oracle.truffle.api.object.DynamicObject;
import org.jruby.truffle.nodes.core.StringNodes;
import org.jruby.truffle.runtime.layouts.Layouts;
import org.jruby.util.ByteList;

public abstract class StringCachingGuards {

public static ByteList privatizeByteList(DynamicObject string) {
if (RubyGuards.isRubyString(string)) {
return StringNodes.getByteList(string).dup();
return Layouts.STRING.getByteList(string).dup();
} else {
return null;
}
}

public static boolean byteListsEqual(DynamicObject string, ByteList byteList) {
if (RubyGuards.isRubyString(string)) {
return StringNodes.getByteList(string).equal(byteList);
return Layouts.STRING.getByteList(string).equal(byteList);
} else {
return false;
}
Original file line number Diff line number Diff line change
@@ -20,6 +20,7 @@
import org.jruby.truffle.runtime.RubyArguments;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.hash.BucketsStrategy;
import org.jruby.truffle.runtime.layouts.Layouts;

import java.util.ArrayList;
import java.util.List;
@@ -77,7 +78,7 @@ private Object lookupRestKeywordArgumentHash(VirtualFrame frame) {
entries.add(keyValue);
}

return BucketsStrategy.create(getContext().getCoreLibrary().getHashClass(), entries, HashNodes.isCompareByIdentity(hash));
return BucketsStrategy.create(getContext().getCoreLibrary().getHashClass(), entries, Layouts.HASH.getCompareByIdentity(hash));
}

}
Original file line number Diff line number Diff line change
@@ -29,12 +29,11 @@
import com.oracle.truffle.api.object.DynamicObject;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.core.BignumNodes;
import org.jruby.truffle.nodes.core.ModuleNodes;
import org.jruby.truffle.nodes.dispatch.CallDispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.control.RaiseException;
import org.jruby.truffle.runtime.layouts.Layouts;

/**
* This is a port of MRI's rb_cmpint, as taken from RubyComparable and broken out into specialized nodes.
@@ -84,7 +83,7 @@ public int cmpLong(long value, Object receiver, Object other) {

@Specialization(guards = "isRubyBignum(value)")
public int cmpBignum(DynamicObject value, Object receiver, Object other) {
return BignumNodes.getBigIntegerValue(value).signum();
return Layouts.BIGNUM.getValue(value).signum();
}

@TruffleBoundary
@@ -93,8 +92,8 @@ public int cmpNil(Object nil, Object receiver, Object other) {
throw new RaiseException(
getContext().getCoreLibrary().argumentError(
String.format("comparison of %s with %s failed",
ModuleNodes.getFields(getContext().getCoreLibrary().getLogicalClass(receiver)).getName(),
ModuleNodes.getFields(getContext().getCoreLibrary().getLogicalClass(other)).getName()), this)
Layouts.MODULE.getFields(getContext().getCoreLibrary().getLogicalClass(receiver)).getName(),
Layouts.MODULE.getFields(getContext().getCoreLibrary().getLogicalClass(other)).getName()), this)
);
}

Loading