Mercurial > hg > graal-jvmci-8
changeset 13942:1ee27cd07ed0
Make code extensible
author | Christian Wimmer <christian.wimmer@oracle.com> |
---|---|
date | Wed, 12 Feb 2014 10:25:29 -0800 |
parents | a55d85c207be |
children | 89ac75425681 |
files | graal/com.oracle.truffle.ruby.nodes/src/com/oracle/truffle/ruby/nodes/core/CoreMethodNodeManager.java |
diffstat | 1 files changed, 8 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.ruby.nodes/src/com/oracle/truffle/ruby/nodes/core/CoreMethodNodeManager.java Wed Feb 12 10:25:16 2014 -0800 +++ b/graal/com.oracle.truffle.ruby.nodes/src/com/oracle/truffle/ruby/nodes/core/CoreMethodNodeManager.java Wed Feb 12 10:25:29 2014 -0800 @@ -31,7 +31,13 @@ * given the Object class object, which should already be initialized with all the core classes. */ public static void addMethods(RubyClass rubyObjectClass) { - for (MethodDetails methodDetails : getMethods()) { + addMethods(rubyObjectClass, getMethods()); + } + + public static void addMethods(RubyClass rubyObjectClass, List<MethodDetails> methods) { + // Same as above, but allows passing of a specific list of core methods. + // This allows extending Truffle-Ruby with non-standard Core Method. + for (MethodDetails methodDetails : methods) { addMethod(rubyObjectClass, methodDetails); } } @@ -82,7 +88,7 @@ /** * Collect up the core methods created by a factory. */ - private static void getMethods(List<MethodDetails> methods, List<? extends NodeFactory<? extends CoreMethodNode>> nodeFactories) { + public static void getMethods(List<MethodDetails> methods, List<? extends NodeFactory<? extends CoreMethodNode>> nodeFactories) { for (NodeFactory<? extends RubyNode> nodeFactory : nodeFactories) { final GeneratedBy generatedBy = nodeFactory.getClass().getAnnotation(GeneratedBy.class); final Class<?> nodeClass = generatedBy.value();