diff options
Diffstat (limited to 'compiler/llvm/ir_builder.cc')
-rw-r--r-- | compiler/llvm/ir_builder.cc | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/compiler/llvm/ir_builder.cc b/compiler/llvm/ir_builder.cc deleted file mode 100644 index 9644ebd976..0000000000 --- a/compiler/llvm/ir_builder.cc +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (C) 2012 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. - */ - -#include "ir_builder.h" - -#include "base/stringprintf.h" - -#include <llvm/IR/Module.h> - -namespace art { -namespace llvm { - - -//---------------------------------------------------------------------------- -// General -//---------------------------------------------------------------------------- - -IRBuilder::IRBuilder(::llvm::LLVMContext& context, ::llvm::Module& module, - IntrinsicHelper& intrinsic_helper) - : LLVMIRBuilder(context), module_(&module), mdb_(context), java_object_type_(NULL), - java_method_type_(NULL), java_thread_type_(NULL), intrinsic_helper_(intrinsic_helper) { - // Get java object type from module - ::llvm::Type* jobject_struct_type = module.getTypeByName("JavaObject"); - CHECK(jobject_struct_type != NULL); - java_object_type_ = jobject_struct_type->getPointerTo(); - - // If type of Method is not explicitly defined in the module, use JavaObject* - ::llvm::Type* type = module.getTypeByName("Method"); - if (type != NULL) { - java_method_type_ = type->getPointerTo(); - } else { - java_method_type_ = java_object_type_; - } - - // If type of Thread is not explicitly defined in the module, use JavaObject* - type = module.getTypeByName("Thread"); - if (type != NULL) { - java_thread_type_ = type->getPointerTo(); - } else { - java_thread_type_ = java_object_type_; - } - - // Create JEnv* type - ::llvm::Type* jenv_struct_type = ::llvm::StructType::create(context, "JEnv"); - jenv_type_ = jenv_struct_type->getPointerTo(); - - // Get Art shadow frame struct type from module - art_frame_type_ = module.getTypeByName("ShadowFrame"); - CHECK(art_frame_type_ != NULL); - - runtime_support_ = NULL; -} - - -//---------------------------------------------------------------------------- -// Type Helper Function -//---------------------------------------------------------------------------- - -::llvm::Type* IRBuilder::getJType(JType jty) { - switch (jty) { - case kVoid: - return getJVoidTy(); - - case kBoolean: - return getJBooleanTy(); - - case kByte: - return getJByteTy(); - - case kChar: - return getJCharTy(); - - case kShort: - return getJShortTy(); - - case kInt: - return getJIntTy(); - - case kLong: - return getJLongTy(); - - case kFloat: - return getJFloatTy(); - - case kDouble: - return getJDoubleTy(); - - case kObject: - return getJObjectTy(); - - default: - LOG(FATAL) << "Unknown java type: " << jty; - return NULL; - } -} - -::llvm::StructType* IRBuilder::getShadowFrameTy(uint32_t vreg_size) { - std::string name(StringPrintf("ShadowFrame%u", vreg_size)); - - // Try to find the existing struct type definition - if (::llvm::Type* type = module_->getTypeByName(name)) { - CHECK(::llvm::isa< ::llvm::StructType>(type)); - return static_cast< ::llvm::StructType*>(type); - } - - // Create new struct type definition - ::llvm::Type* elem_types[] = { - art_frame_type_, - ::llvm::ArrayType::get(getInt32Ty(), vreg_size), - }; - - return ::llvm::StructType::create(elem_types, name); -} - - -} // namespace llvm -} // namespace art |