Skip to content

Commit

Permalink
[java/runtime] sync with dotnet/runtime up to this point
Browse files Browse the repository at this point in the history
  • Loading branch information
mberends committed Nov 1, 2010
1 parent ad6fd43 commit 412d72d
Show file tree
Hide file tree
Showing 22 changed files with 1,211 additions and 350 deletions.
41 changes: 31 additions & 10 deletions java/runtime/Makefile
Expand Up @@ -14,9 +14,9 @@
# | | | | | |
# | | Handler | | |
# | | | | | |
# | Signature | | Representation |
# | | | | | | | |
# | +--+----------------> RakudoCodeRef | | |
# | DispatchCache Signature | | Representation |
# | | | | | | | | |
# | +--+------+---------> RakudoCodeRef | | |
# | | | | | | |
# 1 2 3 ExecutionDomain Context | | |
# | | | | | | | |
Expand Down Expand Up @@ -58,13 +58,15 @@ ALL_BUILD_TARGETS = \
$(CLASSES)Rakudo/Metamodel/Representations/P6str.class \
$(CLASSES)Rakudo/Metamodel/Representations/P6opaque.class \
$(CLASSES)Rakudo/Runtime/CodeObjectUtility.class \
$(CLASSES)Rakudo/Runtime/DefinednessConstraint.class \
$(CLASSES)Rakudo/Runtime/SignatureBinder.class \
$(CLASSES)Rakudo/Metamodel/KnowHOW/KnowHOWREPR.class \
$(CLASSES)Rakudo/Metamodel/KnowHOW/KnowHOWBootstrapper.class \
$(CLASSES)Rakudo/Init.class

OTHER_DEPENDENT_TARGETS = \
$(CLASSES)Rakudo/Runtime/CaptureHelper.class \
$(CLASSES)Rakudo/Runtime/Exceptions/ExceptionDispatcher.class \
$(CLASSES)Rakudo/Runtime/Exceptions/Handler.class \
$(CLASSES)Rakudo/Runtime/Exceptions/LeaveStackUnwinderException.class \
$(CLASSES)Rakudo/Runtime/Lexpad.class \
Expand All @@ -76,7 +78,7 @@ OTHER_DEPENDENT_TARGETS = \
$(CLASSES)Rakudo/Metamodel/Representations/P6mapping.class \
$(CLASSES)Rakudo/Metamodel/Representations/RakudoCodeRef.class \
$(CLASSES)Rakudo/Runtime/Context.class \
$(CLASSES)Rakudo/Runtime/MultiDispatch/LexicalCandidateFinder.class \
$(CLASSES)Rakudo/Runtime/MultiDispatch/DispatchCache.class \
$(CLASSES)Rakudo/Runtime/MultiDispatch/MultiDispatcher.class \
$(CLASSES)Rakudo/Runtime/Ops.class \
$(CLASSES)Rakudo/Runtime/ThreadContext.class \
Expand All @@ -96,14 +98,17 @@ $(CLASSES):
RakudoRuntime.jar: $(ALL_BUILD_TARGETS) $(OTHER_DEPENDENT_TARGETS) $(INNER_CLASSES)
jar cf RakudoRuntime.jar -C $(CLASSES) .
# For troubleshooting, use `jar cvf RakudoRuntime.jar` instead.
# Use `jar tvf RakudoRuntime.jar` to tell what was done.
# Use `jar tvf RakudoRuntime.jar` to tell what's in the jar.

$(CLASSES)Rakudo/Metamodel/Hints.class: Rakudo/Metamodel/Hints.java
$(JAVAC) Rakudo/Metamodel/Hints.java

$(CLASSES)Rakudo/Serialization/SerializationContext.class: Rakudo/Serialization/SerializationContext.java
$(JAVAC) Rakudo/Serialization/SerializationContext.java

$(CLASSES)Rakudo/Runtime/DefinednessConstraint.class: Rakudo/Runtime/DefinednessConstraint.java
$(JAVAC) Rakudo/Runtime/DefinednessConstraint.java

$(CLASSES)Rakudo/Runtime/Exceptions/LeaveStackUnwinderException.class: Rakudo/Runtime/Exceptions/LeaveStackUnwinderException.java
$(JAVAC) Rakudo/Runtime/Exceptions/LeaveStackUnwinderException.java

Expand All @@ -114,6 +119,7 @@ $(CLASSES)Rakudo/Runtime/ExecutionDomain.class: Rakudo/Runtime/ExecutionDomain.j
# Handle it by compiling all the interdependent files in a single step.
# Thanks jnthn++ for the suggestion.
$(CLASSES)Rakudo/Metamodel/RakudoObject.class: Rakudo/Metamodel/RakudoObject.java \
$(CLASSES)Rakudo/Runtime/DefinednessConstraint.class \
Rakudo/Serialization/SerializationContext.java \
Rakudo/Metamodel/Representation.java \
Rakudo/Runtime/CaptureHelper.java \
Expand All @@ -126,9 +132,10 @@ $(CLASSES)Rakudo/Metamodel/RakudoObject.class: Rakudo/Metamodel/RakudoObject.jav
Rakudo/Metamodel/Representations/RakudoCodeRef.java \
Rakudo/Metamodel/REPRRegistry.java \
Rakudo/Runtime/Context.java \
Rakudo/Runtime/Exceptions/ExceptionDispatcher.java \
Rakudo/Runtime/Exceptions/Handler.java \
Rakudo/Runtime/Exceptions/LeaveStackUnwinderException.java \
Rakudo/Runtime/MultiDispatch/LexicalCandidateFinder.java \
Rakudo/Runtime/MultiDispatch/DispatchCache.java \
Rakudo/Runtime/MultiDispatch/MultiDispatcher.java \
Rakudo/Runtime/Ops.java \
Rakudo/Runtime/ThreadContext.java \
Expand All @@ -147,9 +154,10 @@ $(CLASSES)Rakudo/Metamodel/RakudoObject.class: Rakudo/Metamodel/RakudoObject.jav
Rakudo/Metamodel/Representations/RakudoCodeRef.java \
Rakudo/Metamodel/REPRRegistry.java \
Rakudo/Runtime/Context.java \
Rakudo/Runtime/Exceptions/ExceptionDispatcher.java \
Rakudo/Runtime/Exceptions/Handler.java \
Rakudo/Runtime/Exceptions/LeaveStackUnwinderException.java \
Rakudo/Runtime/MultiDispatch/LexicalCandidateFinder.java \
Rakudo/Runtime/MultiDispatch/DispatchCache.java \
Rakudo/Runtime/MultiDispatch/MultiDispatcher.java \
Rakudo/Runtime/Ops.java \
Rakudo/Runtime/ThreadContext.java \
Expand Down Expand Up @@ -283,9 +291,12 @@ TRANSLATED_SOURCE_FILES = \
Rakudo/Runtime/CaptureHelper.java \
Rakudo/Runtime/CodeObjectUtility.java \
Rakudo/Runtime/Context.java \
Rakudo/Runtime/DefinednessConstraint.java \
Rakudo/Runtime/Exceptions/ExceptionDispatcher.java \
Rakudo/Runtime/Exceptions/Handler.java \
Rakudo/Runtime/Exceptions/LeaveStackUnwinderException.java \
Rakudo/Runtime/Lexpad.java \
Rakudo/Runtime/MultiDispatch/LexicalCandidateFinder.java \
Rakudo/Runtime/MultiDispatch/DispatchCache.java \
Rakudo/Runtime/MultiDispatch/MultiDispatcher.java \
Rakudo/Runtime/Ops.java \
Rakudo/Runtime/Parameter.java \
Expand Down Expand Up @@ -353,6 +364,12 @@ Rakudo/Runtime/CodeObjectUtility.java: ../../dotnet/runtime/Runtime/CodeObjectUt
Rakudo/Runtime/Context.java: ../../dotnet/runtime/Runtime/Context.cs
@echo "todo: Rakudo/Runtime/Context.java is older than ../../dotnet/runtime/Runtime/Context.cs"

Rakudo/Runtime/DefinednessConstraint.java: ../../dotnet/runtime/Runtime/Signatures/DefinednessConstraint.cs
@echo "todo: $@ is older than $<"

Rakudo/Runtime/Exceptions/ExceptionDispatcher.java: ../../dotnet/runtime/Runtime/Exceptions/ExceptionDispatcher.cs
@echo "todo: Rakudo/Runtime/Exceptions/ExceptionDispatcher.java is older than ../../dotnet/runtime/Runtime/Exceptions/ExceptionDispatcher.cs"

Rakudo/Runtime/Exceptions/Handler.java: ../../dotnet/runtime/Runtime/Exceptions/Handler.cs
@echo "todo: Rakudo/Runtime/Exceptions/Handler.java is older than ../../dotnet/runtime/Runtime/Exceptions/Handler.cs"

Expand All @@ -365,8 +382,8 @@ Rakudo/Runtime/ExecutionDomain.java: ../../dotnet/runtime/Runtime/ExecutionDomai
Rakudo/Runtime/Lexpad.java: ../../dotnet/runtime/Runtime/Lexpad.cs
@echo "todo: Rakudo/Runtime/Lexpad.java is older than ../../dotnet/runtime/Runtime/Signatures/Lexpad.cs"

Rakudo/Runtime/MultiDispatch/LexicalCandidateFinder.java: ../../dotnet/runtime/Runtime/MultiDispatch/LexicalCandidateFinder.cs
@echo "todo: Rakudo/Runtime/MultiDispatch/LexicalCandidateFinder.java is older than ../../dotnet/runtime/Runtime/MultiDispatch/LexicalCandidateFinder.cs"
Rakudo/Runtime/MultiDispatch/DispatchCache.java: ../../dotnet/runtime/Runtime/MultiDispatch/DispatchCache.cs
@echo "todo: Rakudo/Runtime/MultiDispatch/DispatchCache.java is older than ../../dotnet/runtime/Runtime/MultiDispatch/DispatchCache.cs"

Rakudo/Runtime/MultiDispatch/MultiDispatcher.java: ../../dotnet/runtime/Runtime/MultiDispatch/MultiDispatcher.cs
@echo "todo: Rakudo/Runtime/MultiDispatch/MultiDispatcher.java is older than ../../dotnet/runtime/Runtime/MultiDispatch/MultiDispatcher.cs"
Expand All @@ -393,6 +410,10 @@ Rakudo/Serialization/SerializationContext.java: ../../dotnet/runtime/Serializati
# make todolist
todolist: $(TRANSLATED_SOURCE_FILES)

test: RakudoRuntime.jar
@perl -MExtUtils::Command -e rm_rf t/*.class
@prove -r --exec ./javarun.sh t/*.java

clean:
perl -MExtUtils::Command -e rm_f RakudoRuntime.jar \
$(ALL_BUILD_TARGETS) $(OTHER_DEPENDENT_TARGETS)
Expand Down
78 changes: 43 additions & 35 deletions java/runtime/Rakudo/Init.java
Expand Up @@ -45,8 +45,8 @@ public static ThreadContext Initialize(String settingName)
// Either load a named setting or use the fake bootstrapping one.
Context settingContext =
// Comment out the next line to always use the fake Setting.
// (settingName != null) ? LoadSetting(settingName, knowHOW) :
BootstrapSetting(knowHOW);
(settingName != null) ? LoadSetting(settingName, knowHOW, knowHOWAttribute) :
BootstrapSetting(knowHOW, knowHOWAttribute);

// Cache native capture and LLCode type object.
CaptureHelper.CaptureTypeObject = settingContext.LexPad.GetByName("capture");
Expand Down Expand Up @@ -93,32 +93,33 @@ private static void RegisterRepresentations()
/// </summary>
/// <param name="KnowHOW"></param>
/// <returns></returns>
private static Context BootstrapSetting(RakudoObject KnowHOW)
private static Context BootstrapSetting(RakudoObject knowHOW, RakudoObject knowHOWAttribute)
{
System.err.println( "calling new Context from Init" );
Context settingContext = new Context();
settingContext.LexPad = new Lexpad(new String[]
{ "KnowHOW", "capture", "NQPInt", "NQPNum", "NQPStr", "NQPList", "NQPCode", "list" });
{ "KnowHOW", "KnowHOWAttribute", "capture", "NQPInt", "NQPNum", "NQPStr", "NQPList", "NQPCode", "list" });
RakudoCodeRef.IFunc_Body funcBody = new RakudoCodeRef.IFunc_Body()
{ // create an anonymous class
public RakudoObject Invoke(ThreadContext tc, RakudoObject self, RakudoObject capture) {
RakudoObject nqpList = Ops.get_lex(tc, "NQPList");
P6list.Instance list = (P6list.Instance)nqpList.getSTable().REPR.instance_of(tc, nqpList);
P6capture.Instance NativeCapture = (P6capture.Instance)capture;
for (RakudoObject obj : NativeCapture.Positionals)
P6list.Instance list = (P6list.Instance)(nqpList.getSTable().REPR.instance_of(tc, nqpList));
P6capture.Instance nativeCapture = (P6capture.Instance)capture;
for (RakudoObject obj : nativeCapture.Positionals)
list.Storage.add(obj);
return list;
}
};
settingContext.LexPad.Storage = new RakudoObject[]
{
KnowHOW,
knowHOW,
knowHOWAttribute,
REPRRegistry.get_REPR_by_name("P6capture").type_object_for(null,null),
REPRRegistry.get_REPR_by_name("P6int").type_object_for(null,null),
REPRRegistry.get_REPR_by_name("P6num").type_object_for(null,null),
REPRRegistry.get_REPR_by_name("P6str").type_object_for(null,null),
REPRRegistry.get_REPR_by_name("P6list").type_object_for(null,null),
REPRRegistry.get_REPR_by_name("RakudoCodeRef").type_object_for(null,KnowHOW.getSTable().REPR.instance_of(null,KnowHOW)),
REPRRegistry.get_REPR_by_name("RakudoCodeRef").type_object_for(null,knowHOW.getSTable().REPR.instance_of(null,knowHOW)),
CodeObjectUtility.WrapNativeMethod(funcBody)
};
return settingContext;
Expand Down Expand Up @@ -198,32 +199,39 @@ public static Context LoadSetting(String settingName, RakudoObject knowHOW, Raku

settingContext.LexPad.SetByName("KnowHOW", knowHOW);
settingContext.LexPad.SetByName("KnowHOWAttribute", knowHOWAttribute);

RakudoCodeRef.IFunc_Body funcPrint = new RakudoCodeRef.IFunc_Body()
{ // create an anonymous class
public RakudoObject Invoke(ThreadContext tc, RakudoObject objSelf, RakudoObject objCapture)
{
RakudoObject objParam = CaptureHelper.GetPositional(objCapture, 0);
RakudoObject objMethodStr = objSelf.getSTable().FindMethod.FindMethod(tc, objParam, "Str", 0);
RakudoObject objParamStr = objMethodStr.getSTable().Invoke.Invoke(tc, objMethodStr, objCapture);
System.out.print(Ops.unbox_str(null, objParamStr));
return CaptureHelper.Nil();
}
};
settingContext.LexPad.SetByName("print", CodeObjectUtility.WrapNativeMethod(funcPrint));

RakudoCodeRef.IFunc_Body funcSay = new RakudoCodeRef.IFunc_Body()
{ // create an anonymous class
public RakudoObject Invoke(ThreadContext tc, RakudoObject self, RakudoObject capture)
{
RakudoObject value = CaptureHelper.GetPositional(capture, 0);
RakudoObject strMeth = self.getSTable().FindMethod.FindMethod(tc, value, "Str", 0);
RakudoObject strVal = strMeth.getSTable().Invoke.Invoke(tc, strMeth, capture);
System.out.println(Ops.unbox_str(null, strVal));
return CaptureHelper.Nil();
}
};
settingContext.LexPad.SetByName("say", CodeObjectUtility.WrapNativeMethod(funcSay));
settingContext.LexPad.SetByName("print",
CodeObjectUtility.WrapNativeMethod( new RakudoCodeRef.IFunc_Body()
{ // an anonymous class where C# has a => (lambda)
public RakudoObject Invoke(ThreadContext tc, RakudoObject self, RakudoObject capture)
{
for (int i = 0; i < CaptureHelper.NumPositionals(capture); i++) {
RakudoObject value = CaptureHelper.GetPositional(capture, i);
RakudoObject strMeth = self.getSTable().FindMethod.FindMethod(tc, value, "Str", 0);
RakudoObject strVal = strMeth.getSTable().Invoke.Invoke(tc, strMeth,
CaptureHelper.FormWith( new RakudoObject[] { value } ));
System.out.print(Ops.unbox_str(null, strVal));
}
return CaptureHelper.Nil();
}
}
));
settingContext.LexPad.SetByName("say",
CodeObjectUtility.WrapNativeMethod( new RakudoCodeRef.IFunc_Body()
{ // an anonymous class where C# has a => (lambda)
public RakudoObject Invoke(ThreadContext tc, RakudoObject self, RakudoObject capture)
{
for (int i = 0; i < CaptureHelper.NumPositionals(capture); i++) {
RakudoObject value = CaptureHelper.GetPositional(capture, i);
RakudoObject strMeth = self.getSTable().FindMethod.FindMethod(tc, value, "Str", 0);
RakudoObject strVal = strMeth.getSTable().Invoke.Invoke(tc, strMeth,
CaptureHelper.FormWith( new RakudoObject[] { value } ));
System.out.print(Ops.unbox_str(null, strVal));
}
System.out.println();
return CaptureHelper.Nil();
}
}
));
settingContext.LexPad.SetByName("capture", REPRRegistry.get_REPR_by_name("P6capture").type_object_for(null,null));

return settingContext;
Expand Down

0 comments on commit 412d72d

Please sign in to comment.