summaryrefslogtreecommitdiff
path: root/src/ast/manipulation.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast/manipulation.h')
-rw-r--r--src/ast/manipulation.h69
1 files changed, 0 insertions, 69 deletions
diff --git a/src/ast/manipulation.h b/src/ast/manipulation.h
deleted file mode 100644
index 29b6a346d..000000000
--- a/src/ast/manipulation.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 2017 WebAssembly Community Group participants
- *
- * 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.
- */
-
-#ifndef wasm_ast_manipulation_h
-#define wasm_ast_manipulation_h
-
-#include "wasm.h"
-
-namespace wasm {
-
-namespace ExpressionManipulator {
- // Re-use a node's memory. This helps avoid allocation when optimizing.
- template<typename InputType, typename OutputType>
- inline OutputType* convert(InputType *input) {
- static_assert(sizeof(OutputType) <= sizeof(InputType),
- "Can only convert to a smaller size Expression node");
- input->~InputType(); // arena-allocaed, so no destructor, but avoid UB.
- OutputType* output = (OutputType*)(input);
- new (output) OutputType;
- return output;
- }
-
- // Convenience method for nop, which is a common conversion
- template<typename InputType>
- inline Nop* nop(InputType* target) {
- return convert<InputType, Nop>(target);
- }
-
- // Convert a node that allocates
- template<typename InputType, typename OutputType>
- inline OutputType* convert(InputType *input, MixedArena& allocator) {
- assert(sizeof(OutputType) <= sizeof(InputType));
- input->~InputType(); // arena-allocaed, so no destructor, but avoid UB.
- OutputType* output = (OutputType*)(input);
- new (output) OutputType(allocator);
- return output;
- }
-
- using CustomCopier = std::function<Expression*(Expression*)>;
- Expression* flexibleCopy(Expression* original, Module& wasm, CustomCopier custom);
-
- inline Expression* copy(Expression* original, Module& wasm) {
- auto copy = [](Expression* curr) {
- return nullptr;
- };
- return flexibleCopy(original, wasm, copy);
- }
-
- // Splice an item into the middle of a block's list
- void spliceIntoBlock(Block* block, Index index, Expression* add);
-}
-
-} // wasm
-
-#endif // wams_ast_manipulation_h
-