diff options
author | Mikael Peltier <mikaelpeltier@google.com> | 2014-11-05 16:35:51 +0000 |
---|---|---|
committer | Mikael Peltier <mikaelpeltier@google.com> | 2014-11-05 16:35:51 +0000 |
commit | 989f173bfe28131770bd611b35cc330d0345769f (patch) | |
tree | 17550b2fd17cf43a04a010bd76b35cd867ec1920 /jack/src/com/android/jack/jayce/v0002 | |
parent | 45487cf414cc67a29c67baa028cbabe624d5a9ba (diff) | |
download | toolchain_jack-989f173bfe28131770bd611b35cc330d0345769f.zip toolchain_jack-989f173bfe28131770bd611b35cc330d0345769f.tar.gz toolchain_jack-989f173bfe28131770bd611b35cc330d0345769f.tar.bz2 |
Revert "Remove NProgram since it is no longer used"
This reverts commit 45487cf414cc67a29c67baa028cbabe624d5a9ba.
Change-Id: Icd925f6d4b31cb36cb5e32a021c074439f76a642
Diffstat (limited to 'jack/src/com/android/jack/jayce/v0002')
-rw-r--r-- | jack/src/com/android/jack/jayce/v0002/NodeFactory.java | 8 | ||||
-rw-r--r-- | jack/src/com/android/jack/jayce/v0002/io/Token.java | 8 | ||||
-rw-r--r-- | jack/src/com/android/jack/jayce/v0002/nodes/NProgram.java | 78 |
3 files changed, 94 insertions, 0 deletions
diff --git a/jack/src/com/android/jack/jayce/v0002/NodeFactory.java b/jack/src/com/android/jack/jayce/v0002/NodeFactory.java index c883a0d..392deda 100644 --- a/jack/src/com/android/jack/jayce/v0002/NodeFactory.java +++ b/jack/src/com/android/jack/jayce/v0002/NodeFactory.java @@ -114,6 +114,7 @@ import com.android.jack.ir.ast.JPrefixNegOperation; import com.android.jack.ir.ast.JPrefixNotOperation; import com.android.jack.ir.ast.JReinterpretCastOperation; import com.android.jack.ir.ast.JReturnStatement; +import com.android.jack.ir.ast.JSession; import com.android.jack.ir.ast.JShlOperation; import com.android.jack.ir.ast.JShortLiteral; import com.android.jack.ir.ast.JShrOperation; @@ -226,6 +227,7 @@ import com.android.jack.jayce.v0002.nodes.NPrefixDecOperation; import com.android.jack.jayce.v0002.nodes.NPrefixIncOperation; import com.android.jack.jayce.v0002.nodes.NPrefixNegOperation; import com.android.jack.jayce.v0002.nodes.NPrefixNotOperation; +import com.android.jack.jayce.v0002.nodes.NProgram; import com.android.jack.jayce.v0002.nodes.NReinterpretCastOperation; import com.android.jack.jayce.v0002.nodes.NReturnStatement; import com.android.jack.jayce.v0002.nodes.NShlOperation; @@ -674,6 +676,12 @@ public class NodeFactory { } @Override + public boolean visit(@Nonnull JSession x) { + newNode = new NProgram(); + return false; + } + + @Override public boolean visit(@Nonnull JReturnStatement x) { newNode = new NReturnStatement(); return false; diff --git a/jack/src/com/android/jack/jayce/v0002/io/Token.java b/jack/src/com/android/jack/jayce/v0002/io/Token.java index 7e58ec6..46d62fa 100644 --- a/jack/src/com/android/jack/jayce/v0002/io/Token.java +++ b/jack/src/com/android/jack/jayce/v0002/io/Token.java @@ -111,6 +111,7 @@ import com.android.jack.jayce.v0002.nodes.NPrefixDecOperation; import com.android.jack.jayce.v0002.nodes.NPrefixIncOperation; import com.android.jack.jayce.v0002.nodes.NPrefixNegOperation; import com.android.jack.jayce.v0002.nodes.NPrefixNotOperation; +import com.android.jack.jayce.v0002.nodes.NProgram; import com.android.jack.jayce.v0002.nodes.NReinterpretCastOperation; import com.android.jack.jayce.v0002.nodes.NReturnStatement; import com.android.jack.jayce.v0002.nodes.NShlOperation; @@ -806,6 +807,13 @@ public enum Token { return new NPrefixNotOperation(); } }, + PROGRAM("program", NodeLevel.TYPES) { + @Nonnull + @Override + public NNode newNode() { + return new NProgram(); + } + }, REINTERPRETCAST_OPERATION("reinterpret-cast") { @Override @Nonnull diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NProgram.java b/jack/src/com/android/jack/jayce/v0002/nodes/NProgram.java new file mode 100644 index 0000000..ce4ad19 --- /dev/null +++ b/jack/src/com/android/jack/jayce/v0002/nodes/NProgram.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.jack.jayce.v0002.nodes; + +import com.android.jack.ir.ast.JDefinedClassOrInterface; +import com.android.jack.ir.ast.JSession; +import com.android.jack.jayce.v0002.NNode; +import com.android.jack.jayce.v0002.io.ExportSession; +import com.android.jack.jayce.v0002.io.ImportHelper; +import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl; +import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl; +import com.android.jack.jayce.v0002.io.Token; + +import java.io.IOException; +import java.util.Collections; +import java.util.List; + +import javax.annotation.Nonnull; + +/** + * Root representing an entire Java program. + */ +public class NProgram extends NNode { + + @Nonnull + public static final Token TOKEN = Token.PROGRAM; + + @Nonnull + public List<NDeclaredType> allTypes = Collections.emptyList(); + + @Override + public void importFromJast(@Nonnull ImportHelper loader, @Nonnull Object node) { + JSession session = (JSession) node; + allTypes = loader.load(NDeclaredType.class, session.getTypesToEmit()); + } + + @Override + @Nonnull + public JSession exportAsJast(@Nonnull ExportSession exportSession) { + JSession session = new JSession(); + for (NDeclaredType declaredType : allTypes) { + JDefinedClassOrInterface jDeclaredType = declaredType.exportAsJast(exportSession); + session.addTypeToEmit(jDeclaredType); + } + return session; + } + + @Override + public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException { + out.writeNodes(allTypes); + } + + @Override + public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException { + allTypes = in.readNodes(NDeclaredType.class); + } + + @Override + @Nonnull + public Token getToken() { + return TOKEN; + } + +} |