[vmkit-commits] [PATCH] Refactor runtime-specific JavaJIT code to separate files

Nicolas Geoffray nicolas.geoffray at gmail.com
Thu Oct 27 09:43:22 PDT 2011


Looks good, modulo small comments:

On Thu, Oct 27, 2011 at 3:11 AM, Will Dietz <wdietz2 at illinois.edu> wrote:

> Inlined below.
>
> For now, keeping the "spawn two .inc" files approach since I'm not
> sure where else this code would live.
>
> ~Will
>
>
> >From 84314ed791bfd85f1cb5a8d6be2c28dac09c6e7b Mon Sep 17 00:00:00 2001
> From: Will Dietz <w at wdtz.org>
> Date: Wed, 26 Oct 2011 19:56:09 -0500
> Subject: [PATCH 2/3] Refactor runtime-specific JavaJIT code to separate
>  files.
>
> ---
>  lib/J3/Compiler/JavaJIT.cpp          |  235
> +---------------------------------
>  lib/J3/Compiler/JavaJITClasspath.inc |  228
> +++++++++++++++++++++++++++++++++
>  lib/J3/Compiler/JavaJITOpenJDK.inc   |    4 +
>  3 files changed, 239 insertions(+), 228 deletions(-)
>  create mode 100644 lib/J3/Compiler/JavaJITClasspath.inc
>  create mode 100644 lib/J3/Compiler/JavaJITOpenJDK.inc
>
> diff --git a/lib/J3/Compiler/JavaJIT.cpp b/lib/J3/Compiler/JavaJIT.cpp
> index 6509b96..f693d48 100644
> --- a/lib/J3/Compiler/JavaJIT.cpp
> +++ b/lib/J3/Compiler/JavaJIT.cpp
> @@ -2290,234 +2290,6 @@ void JavaJIT::invokeInterface(uint16 index) {
>   }
>  }
>
> -void JavaJIT::lowerArraycopy(std::vector<Value*>& args) {
> -  Function* meth = TheCompiler->getMethod(upcalls->VMSystemArraycopy,
> NULL);
> -
> -  Value* ptr_src = args[0];
> -  Value* int32_start = args[1];
> -  Value* ptr_dst = args[2];
> -  Value* int32_start2 = args[3];
> -  Value* int32_length = args[4];
> -
> -  JITVerifyNull(ptr_src);
> -  JITVerifyNull(ptr_dst);
> -
> -  BasicBlock* label_entry = currentBlock;
> -  BasicBlock* label_bb = createBasicBlock("bb");
> -  BasicBlock* label_bb2 = createBasicBlock("bb2");
> -  BasicBlock* label_bb4 = createBasicBlock("bb4");
> -  BasicBlock* label_bb5 = createBasicBlock("bb5");
> -  BasicBlock* label_bb12_preheader = createBasicBlock("bb12.preheader");
> -  BasicBlock* label_bb7 = createBasicBlock("bb7");
> -  BasicBlock* label_bb11 = createBasicBlock("bb11");
> -  BasicBlock* label_memmove = createBasicBlock("memmove");
> -  BasicBlock* label_backward = createBasicBlock("backward");
> -  BasicBlock* label_return = createBasicBlock("return");
> -
> -  BasicBlock* log_label_entry = createBasicBlock("log_entry");
> -  BasicBlock* log_label_bb = createBasicBlock("log_bb");
> -
> -  // Block entry (label_entry)
> -  CallInst* ptr_16 = CallInst::Create(intrinsics->GetVTFunction, ptr_src,
> "",
> -                                      label_entry);
> -  CallInst* ptr_17 = CallInst::Create(intrinsics->GetVTFunction, ptr_dst,
> "",
> -                                      label_entry);
> -
> -  ICmpInst* int1_18 = new ICmpInst(*label_entry, ICmpInst::ICMP_EQ,
> ptr_16,
> -                                   ptr_17, "");
> -  BranchInst::Create(label_bb, label_bb2, int1_18, label_entry);
> -
> -  // Block bb (label_bb)
> -  currentBlock = label_bb;
> -  CallInst* ptr_20 = CallInst::Create(intrinsics->GetClassFunction,
> ptr_src, "",
> -                                      label_bb);
> -  std::vector<Value*> ptr_21_indices;
> -  ptr_21_indices.push_back(intrinsics->constantZero);
> -  ptr_21_indices.push_back(intrinsics->OffsetAccessInCommonClassConstant);
> -  Instruction* ptr_21 =
> -    GetElementPtrInst::Create(ptr_20, ptr_21_indices, "", label_bb);
> -  LoadInst* int32_22 = new LoadInst(ptr_21, "", false, label_bb);
> -  Value* cmp = BinaryOperator::CreateAnd(int32_22,
> intrinsics->IsArrayConstant, "",
> -                                         label_bb);
> -  Value* zero = ConstantInt::get(Type::getInt16Ty(*llvmContext), 0);
> -  ICmpInst* int1_23 = new ICmpInst(*label_bb, ICmpInst::ICMP_NE, cmp,
> zero, "");
> -  BranchInst::Create(label_bb4, label_bb2, int1_23, label_bb);
> -
> -
> -  // Block bb2 (label_bb2)
> -  currentBlock = label_bb2;
> -  invoke(meth, args, "", label_bb2);
> -  BranchInst::Create(label_return, currentBlock);
> -
> -
> -  // Block bb4 (label_bb4)
> -  currentBlock = label_bb4;
> -  BinaryOperator* int32_27 = BinaryOperator::Create(Instruction::Add,
> -                                                    int32_length,
> int32_start,
> -                                                    "", label_bb4);
> -  Value* int32_28 = arraySize(ptr_src);
> -
> -  ICmpInst* int1_29 = new ICmpInst(*label_bb4, ICmpInst::ICMP_ULE,
> int32_27,
> -                                   int32_28, "");
> -  BranchInst::Create(label_bb5, label_bb7, int1_29, label_bb4);
> -
> -  // Block bb5 (label_bb5)
> -  currentBlock = label_bb5;
> -  BinaryOperator* int32_31 = BinaryOperator::Create(Instruction::Add,
> -                                                    int32_length,
> int32_start2,
> -                                                    "", label_bb5);
> -  Value* int32_32 = arraySize(ptr_dst);
> -
> -  ICmpInst* int1_33 = new ICmpInst(*label_bb5, ICmpInst::ICMP_ULE,
> int32_31,
> -                                   int32_32, "");
> -  BranchInst::Create(label_bb12_preheader, label_bb7, int1_33, label_bb5);
> -
> -  // Block bb12.preheader (label_bb12_preheader)
> -  currentBlock = label_bb12_preheader;
> -  ICmpInst* int1_35 = new ICmpInst(*label_bb12_preheader,
> ICmpInst::ICMP_UGT,
> -                                   int32_length, intrinsics->constantZero,
> "");
> -  BranchInst::Create(log_label_entry, label_return, int1_35,
> label_bb12_preheader);
> -
> -  // Block bb7 (label_bb7)
> -  currentBlock = label_bb7;
> -  Value* VTArgs[1] = { Constant::getNullValue(intrinsics->VTType) };
> -  throwRuntimeException(intrinsics->ArrayStoreExceptionFunction, VTArgs,
> 1);
> -
> -
> -
> -  // Block entry (label_entry)
> -  currentBlock = log_label_entry;
> -  Value* ptr_10_indices[2] = { intrinsics->constantZero,
> -
> intrinsics->OffsetBaseClassInArrayClassConstant };
> -  Instruction* temp = new BitCastInst(ptr_20,
> intrinsics->JavaClassArrayType, "",
> -                                      log_label_entry);
> -  Instruction* ptr_10 = GetElementPtrInst::Create(temp, ptr_10_indices,
> "",
> -                                                  log_label_entry);
> -
> -  LoadInst* ptr_11 = new LoadInst(ptr_10, "", false, log_label_entry);
> -
> -  Value* ptr_12_indices[2] = { intrinsics->constantZero,
> -
> intrinsics->OffsetAccessInCommonClassConstant };
> -  Instruction* ptr_12 = GetElementPtrInst::Create(ptr_11, ptr_12_indices,
> "",
> -                                                  log_label_entry);
> -  LoadInst* int16_13 = new LoadInst(ptr_12, "", false, log_label_entry);
> -
> -  BinaryOperator* int32_15 = BinaryOperator::Create(Instruction::And,
> int16_13,
> -
> intrinsics->IsPrimitiveConstant,
> -                                                    "", log_label_entry);
> -  ICmpInst* int1_16 = new ICmpInst(*log_label_entry, ICmpInst::ICMP_EQ,
> -                                   int32_15, zero, "");
> -  BranchInst::Create(label_bb2, log_label_bb, int1_16, log_label_entry);
> -
> -  // Block bb (log_label_bb)
> -  currentBlock = log_label_bb;
> -  Value* ptr_11_indices[2] = { intrinsics->constantZero,
> -
> intrinsics->OffsetLogSizeInPrimitiveClassConstant };
> -  temp = new BitCastInst(ptr_11, intrinsics->JavaClassPrimitiveType, "",
> -                         log_label_bb);
> -  GetElementPtrInst* ptr_18 = GetElementPtrInst::Create(temp,
> ptr_11_indices,
> -                                                        "", log_label_bb);
> -  LoadInst* int32_20 = new LoadInst(ptr_18, "", false, log_label_bb);
> -
> -  int32_start = BinaryOperator::CreateShl(int32_start, int32_20, "",
> -                                          log_label_bb);
> -  int32_start2 = BinaryOperator::CreateShl(int32_start2, int32_20, "",
> -                                           log_label_bb);
> -  int32_length = BinaryOperator::CreateShl(int32_length, int32_20, "",
> -                                           log_label_bb);
> -
> -  ptr_src = new BitCastInst(ptr_src, intrinsics->JavaArrayUInt8Type, "",
> -                            log_label_bb);
> -
> -  ptr_dst = new BitCastInst(ptr_dst, intrinsics->JavaArrayUInt8Type, "",
> -                            log_label_bb);
> -
> -  Value* indexes[3] = { intrinsics->constantZero,
> -                        intrinsics->JavaArrayElementsOffsetConstant,
> -                        int32_start };
> -  Instruction* ptr_42 = GetElementPtrInst::Create(ptr_src, indexes,
> -                                                  "", log_label_bb);
> -
> -  indexes[2] = int32_start2;
> -  Instruction* ptr_44 = GetElementPtrInst::Create(ptr_dst, indexes,
> -                                                  "", log_label_bb);
> -
> -  BranchInst::Create(label_memmove, log_label_bb);
> -
> -  // Block memmove
> -  currentBlock = label_memmove;
> -  Value* src_int = new PtrToIntInst(ptr_42, intrinsics->pointerSizeType,
> "",
> -                                    currentBlock);
> -
> -  Value* dst_int = new PtrToIntInst(ptr_44, intrinsics->pointerSizeType,
> "",
> -                                    currentBlock);
> -
> -  cmp = new ICmpInst(*currentBlock, ICmpInst::ICMP_ULT, dst_int, src_int,
> "");
> -
> -  Value* increment = SelectInst::Create(cmp, intrinsics->constantOne,
> -                                        intrinsics->constantMinusOne, "",
> -                                        currentBlock);
> -  BranchInst::Create(label_bb11, label_backward, cmp, currentBlock);
> -
> -  PHINode* phi_dst_ptr = PHINode::Create(ptr_44->getType(), 3, "",
> label_bb11);
> -  PHINode* phi_src_ptr = PHINode::Create(ptr_44->getType(), 3, "",
> label_bb11);
> -  phi_dst_ptr->addIncoming(ptr_44, currentBlock);
> -  phi_src_ptr->addIncoming(ptr_42, currentBlock);
> -
> -  // Block backward
> -  currentBlock = label_backward;
> -
> -  ptr_42 = GetElementPtrInst::Create(ptr_42, int32_length, "",
> -                                     currentBlock);
> -
> -  ptr_44 = GetElementPtrInst::Create(ptr_44, int32_length, "",
> -                                     currentBlock);
> -
> -  ptr_42 = GetElementPtrInst::Create(ptr_42, intrinsics->constantMinusOne,
> "",
> -                                     currentBlock);
> -
> -  ptr_44 = GetElementPtrInst::Create(ptr_44, intrinsics->constantMinusOne,
> "",
> -                                     currentBlock);
> -
> -  phi_dst_ptr->addIncoming(ptr_44, currentBlock);
> -  phi_src_ptr->addIncoming(ptr_42, currentBlock);
> -
> -  BranchInst::Create(label_bb11, currentBlock);
> -
> -  // Block bb11 (label_bb11)
> -  currentBlock = label_bb11;
> -  Argument* fwdref_39 = new Argument(Type::getInt32Ty(*llvmContext));
> -  PHINode* int32_i_016 = PHINode::Create(Type::getInt32Ty(*llvmContext),
> 2,
> -                                         "i.016", label_bb11);
> -  int32_i_016->addIncoming(fwdref_39, label_bb11);
> -  int32_i_016->addIncoming(intrinsics->constantZero, log_label_bb);
> -
> -  LoadInst* ptr_43 = new LoadInst(phi_src_ptr, "", false, label_bb11);
> -  new StoreInst(ptr_43, phi_dst_ptr, false, label_bb11);
> -
> -
> -  ptr_42 = GetElementPtrInst::Create(phi_src_ptr, increment, "",
> -                                     label_bb11);
> -
> -  ptr_44 = GetElementPtrInst::Create(phi_dst_ptr, increment, "",
> -                                     label_bb11);
> -  phi_dst_ptr->addIncoming(ptr_44, label_bb11);
> -  phi_src_ptr->addIncoming(ptr_42, label_bb11);
> -
> -  BinaryOperator* int32_indvar_next =
> -    BinaryOperator::Create(Instruction::Add, int32_i_016,
> intrinsics->constantOne,
> -                           "indvar.next", label_bb11);
> -  ICmpInst* int1_exitcond = new ICmpInst(*label_bb11, ICmpInst::ICMP_EQ,
> -                                         int32_indvar_next, int32_length,
> -                                         "exitcond");
> -  BranchInst::Create(label_return, label_bb11, int1_exitcond, label_bb11);
> -
> -  // Resolve Forward References
> -  fwdref_39->replaceAllUsesWith(int32_indvar_next); delete fwdref_39;
> -
> -  currentBlock = label_return;
> -}
> -
>  DebugLoc JavaJIT::CreateLocation() {
>   DebugLoc DL = DebugLoc::get(currentBytecodeIndex, 0, DbgSubprogram);
>   return DL;
> @@ -2842,3 +2614,10 @@ void JavaJIT::finishExceptions() {
>     }
>   }
>  }
> +
> +
> +#ifdef USE_OPENJDK
> +#include "JavaJITOpenJDK.inc"
> +#else
> +#include "JavaJITClasspath.inc"
> +#endif
> diff --git a/lib/J3/Compiler/JavaJITClasspath.inc
> b/lib/J3/Compiler/JavaJITClasspath.inc
> new file mode 100644
> index 0000000..1c6211d
> --- /dev/null
> +++ b/lib/J3/Compiler/JavaJITClasspath.inc
> @@ -0,0 +1,228 @@
> +
> +void JavaJIT::lowerArraycopy(std::vector<Value*>& args) {
> +  Function* meth = TheCompiler->getMethod(upcalls->VMSystemArraycopy,
> NULL);
> +
> +  Value* ptr_src = args[0];
> +  Value* int32_start = args[1];
> +  Value* ptr_dst = args[2];
> +  Value* int32_start2 = args[3];
> +  Value* int32_length = args[4];
> +
> +  JITVerifyNull(ptr_src);
> +  JITVerifyNull(ptr_dst);
> +
> +  BasicBlock* label_entry = currentBlock;
> +  BasicBlock* label_bb = createBasicBlock("bb");
> +  BasicBlock* label_bb2 = createBasicBlock("bb2");
> +  BasicBlock* label_bb4 = createBasicBlock("bb4");
> +  BasicBlock* label_bb5 = createBasicBlock("bb5");
> +  BasicBlock* label_bb12_preheader = createBasicBlock("bb12.preheader");
> +  BasicBlock* label_bb7 = createBasicBlock("bb7");
> +  BasicBlock* label_bb11 = createBasicBlock("bb11");
> +  BasicBlock* label_memmove = createBasicBlock("memmove");
> +  BasicBlock* label_backward = createBasicBlock("backward");
> +  BasicBlock* label_return = createBasicBlock("return");
> +
> +  BasicBlock* log_label_entry = createBasicBlock("log_entry");
> +  BasicBlock* log_label_bb = createBasicBlock("log_bb");
> +
> +  // Block entry (label_entry)
> +  CallInst* ptr_16 = CallInst::Create(intrinsics->GetVTFunction, ptr_src,
> "",
> +                                      label_entry);
> +  CallInst* ptr_17 = CallInst::Create(intrinsics->GetVTFunction, ptr_dst,
> "",
> +                                      label_entry);
> +
> +  ICmpInst* int1_18 = new ICmpInst(*label_entry, ICmpInst::ICMP_EQ,
> ptr_16,
> +                                   ptr_17, "");
> +  BranchInst::Create(label_bb, label_bb2, int1_18, label_entry);
> +
> +  // Block bb (label_bb)
> +  currentBlock = label_bb;
> +  CallInst* ptr_20 = CallInst::Create(intrinsics->GetClassFunction,
> ptr_src, "",
> +                                      label_bb);
> +  std::vector<Value*> ptr_21_indices;
> +  ptr_21_indices.push_back(intrinsics->constantZero);
> +  ptr_21_indices.push_back(intrinsics->OffsetAccessInCommonClassConstant);
> +  Instruction* ptr_21 =
> +    GetElementPtrInst::Create(ptr_20, ptr_21_indices, "", label_bb);
> +  LoadInst* int32_22 = new LoadInst(ptr_21, "", false, label_bb);
> +  Value* cmp = BinaryOperator::CreateAnd(int32_22,
> intrinsics->IsArrayConstant, "",
> +                                         label_bb);
> +  Value* zero = ConstantInt::get(Type::getInt16Ty(*llvmContext), 0);
> +  ICmpInst* int1_23 = new ICmpInst(*label_bb, ICmpInst::ICMP_NE, cmp,
> zero, "");
> +  BranchInst::Create(label_bb4, label_bb2, int1_23, label_bb);
> +
> +
> +  // Block bb2 (label_bb2)
> +  currentBlock = label_bb2;
> +  invoke(meth, args, "", label_bb2);
> +  BranchInst::Create(label_return, currentBlock);
> +
> +
> +  // Block bb4 (label_bb4)
> +  currentBlock = label_bb4;
> +  BinaryOperator* int32_27 = BinaryOperator::Create(Instruction::Add,
> +                                                    int32_length,
> int32_start,
> +                                                    "", label_bb4);
> +  Value* int32_28 = arraySize(ptr_src);
> +
> +  ICmpInst* int1_29 = new ICmpInst(*label_bb4, ICmpInst::ICMP_ULE,
> int32_27,
> +                                   int32_28, "");
> +  BranchInst::Create(label_bb5, label_bb7, int1_29, label_bb4);
> +
> +  // Block bb5 (label_bb5)
> +  currentBlock = label_bb5;
> +  BinaryOperator* int32_31 = BinaryOperator::Create(Instruction::Add,
> +                                                    int32_length,
> int32_start2,
> +                                                    "", label_bb5);
> +  Value* int32_32 = arraySize(ptr_dst);
> +
> +  ICmpInst* int1_33 = new ICmpInst(*label_bb5, ICmpInst::ICMP_ULE,
> int32_31,
> +                                   int32_32, "");
> +  BranchInst::Create(label_bb12_preheader, label_bb7, int1_33, label_bb5);
> +
> +  // Block bb12.preheader (label_bb12_preheader)
> +  currentBlock = label_bb12_preheader;
> +  ICmpInst* int1_35 = new ICmpInst(*label_bb12_preheader,
> ICmpInst::ICMP_UGT,
> +                                   int32_length, intrinsics->constantZero,
> "");
> +  BranchInst::Create(log_label_entry, label_return, int1_35,
> label_bb12_preheader);
> +
> +  // Block bb7 (label_bb7)
> +  currentBlock = label_bb7;
> +  Value* VTArgs[1] = { Constant::getNullValue(intrinsics->VTType) };
> +  throwRuntimeException(intrinsics->ArrayStoreExceptionFunction, VTArgs,
> 1);
> +
> +
> +
> +  // Block entry (label_entry)
> +  currentBlock = log_label_entry;
> +  Value* ptr_10_indices[2] = { intrinsics->constantZero,
> +
> intrinsics->OffsetBaseClassInArrayClassConstant };
> +  Instruction* temp = new BitCastInst(ptr_20,
> intrinsics->JavaClassArrayType, "",
> +                                      log_label_entry);
> +  Instruction* ptr_10 = GetElementPtrInst::Create(temp, ptr_10_indices,
> "",
> +                                                  log_label_entry);
> +
> +  LoadInst* ptr_11 = new LoadInst(ptr_10, "", false, log_label_entry);
> +
> +  Value* ptr_12_indices[2] = { intrinsics->constantZero,
> +
> intrinsics->OffsetAccessInCommonClassConstant };
> +  Instruction* ptr_12 = GetElementPtrInst::Create(ptr_11, ptr_12_indices,
> "",
> +                                                  log_label_entry);
> +  LoadInst* int16_13 = new LoadInst(ptr_12, "", false, log_label_entry);
> +
> +  BinaryOperator* int32_15 = BinaryOperator::Create(Instruction::And,
> int16_13,
> +
> intrinsics->IsPrimitiveConstant,
> +                                                    "", log_label_entry);
> +  ICmpInst* int1_16 = new ICmpInst(*log_label_entry, ICmpInst::ICMP_EQ,
> +                                   int32_15, zero, "");
> +  BranchInst::Create(label_bb2, log_label_bb, int1_16, log_label_entry);
> +
> +  // Block bb (log_label_bb)
> +  currentBlock = log_label_bb;
> +  Value* ptr_11_indices[2] = { intrinsics->constantZero,
> +
> intrinsics->OffsetLogSizeInPrimitiveClassConstant };
> +  temp = new BitCastInst(ptr_11, intrinsics->JavaClassPrimitiveType, "",
> +                         log_label_bb);
> +  GetElementPtrInst* ptr_18 = GetElementPtrInst::Create(temp,
> ptr_11_indices,
> +                                                        "", log_label_bb);
> +  LoadInst* int32_20 = new LoadInst(ptr_18, "", false, log_label_bb);
> +
> +  int32_start = BinaryOperator::CreateShl(int32_start, int32_20, "",
> +                                          log_label_bb);
> +  int32_start2 = BinaryOperator::CreateShl(int32_start2, int32_20, "",
> +                                           log_label_bb);
> +  int32_length = BinaryOperator::CreateShl(int32_length, int32_20, "",
> +                                           log_label_bb);
> +
> +  ptr_src = new BitCastInst(ptr_src, intrinsics->JavaArrayUInt8Type, "",
> +                            log_label_bb);
> +
> +  ptr_dst = new BitCastInst(ptr_dst, intrinsics->JavaArrayUInt8Type, "",
> +                            log_label_bb);
> +
> +  Value* indexes[3] = { intrinsics->constantZero,
> +                        intrinsics->JavaArrayElementsOffsetConstant,
> +                        int32_start };
> +  Instruction* ptr_42 = GetElementPtrInst::Create(ptr_src, indexes,
> +                                                  "", log_label_bb);
> +
> +  indexes[2] = int32_start2;
> +  Instruction* ptr_44 = GetElementPtrInst::Create(ptr_dst, indexes,
> +                                                  "", log_label_bb);
> +
> +  BranchInst::Create(label_memmove, log_label_bb);
> +
> +  // Block memmove
> +  currentBlock = label_memmove;
> +  Value* src_int = new PtrToIntInst(ptr_42, intrinsics->pointerSizeType,
> "",
> +                                    currentBlock);
> +
> +  Value* dst_int = new PtrToIntInst(ptr_44, intrinsics->pointerSizeType,
> "",
> +                                    currentBlock);
> +
> +  cmp = new ICmpInst(*currentBlock, ICmpInst::ICMP_ULT, dst_int, src_int,
> "");
> +
> +  Value* increment = SelectInst::Create(cmp, intrinsics->constantOne,
> +                                        intrinsics->constantMinusOne, "",
> +                                        currentBlock);
> +  BranchInst::Create(label_bb11, label_backward, cmp, currentBlock);
> +
> +  PHINode* phi_dst_ptr = PHINode::Create(ptr_44->getType(), 3, "",
> label_bb11);
> +  PHINode* phi_src_ptr = PHINode::Create(ptr_44->getType(), 3, "",
> label_bb11);
> +  phi_dst_ptr->addIncoming(ptr_44, currentBlock);
> +  phi_src_ptr->addIncoming(ptr_42, currentBlock);
> +
> +  // Block backward
> +  currentBlock = label_backward;
> +
> +  ptr_42 = GetElementPtrInst::Create(ptr_42, int32_length, "",
> +                                     currentBlock);
> +
> +  ptr_44 = GetElementPtrInst::Create(ptr_44, int32_length, "",
> +                                     currentBlock);
> +
> +  ptr_42 = GetElementPtrInst::Create(ptr_42, intrinsics->constantMinusOne,
> "",
> +                                     currentBlock);
> +
> +  ptr_44 = GetElementPtrInst::Create(ptr_44, intrinsics->constantMinusOne,
> "",
> +                                     currentBlock);
> +
> +  phi_dst_ptr->addIncoming(ptr_44, currentBlock);
> +  phi_src_ptr->addIncoming(ptr_42, currentBlock);
> +
> +  BranchInst::Create(label_bb11, currentBlock);
> +
> +  // Block bb11 (label_bb11)
> +  currentBlock = label_bb11;
> +  Argument* fwdref_39 = new Argument(Type::getInt32Ty(*llvmContext));
> +  PHINode* int32_i_016 = PHINode::Create(Type::getInt32Ty(*llvmContext),
> 2,
> +                                         "i.016", label_bb11);
> +  int32_i_016->addIncoming(fwdref_39, label_bb11);
> +  int32_i_016->addIncoming(intrinsics->constantZero, log_label_bb);
> +
> +  LoadInst* ptr_43 = new LoadInst(phi_src_ptr, "", false, label_bb11);
> +  new StoreInst(ptr_43, phi_dst_ptr, false, label_bb11);
> +
> +
> +  ptr_42 = GetElementPtrInst::Create(phi_src_ptr, increment, "",
> +                                     label_bb11);
> +
> +  ptr_44 = GetElementPtrInst::Create(phi_dst_ptr, increment, "",
> +                                     label_bb11);
> +  phi_dst_ptr->addIncoming(ptr_44, label_bb11);
> +  phi_src_ptr->addIncoming(ptr_42, label_bb11);
> +
> +  BinaryOperator* int32_indvar_next =
> +    BinaryOperator::Create(Instruction::Add, int32_i_016,
> intrinsics->constantOne,
> +                           "indvar.next", label_bb11);
> +  ICmpInst* int1_exitcond = new ICmpInst(*label_bb11, ICmpInst::ICMP_EQ,
> +                                         int32_indvar_next, int32_length,
> +                                         "exitcond");
> +  BranchInst::Create(label_return, label_bb11, int1_exitcond, label_bb11);
> +
> +  // Resolve Forward References
> +  fwdref_39->replaceAllUsesWith(int32_indvar_next); delete fwdref_39;
> +
> +  currentBlock = label_return;
> +}
> diff --git a/lib/J3/Compiler/JavaJITOpenJDK.inc
> b/lib/J3/Compiler/JavaJITOpenJDK.inc
> new file mode 100644
> index 0000000..6d80a9a
> --- /dev/null
> +++ b/lib/J3/Compiler/JavaJITOpenJDK.inc
> @@ -0,0 +1,4 @@
>

Add copyright.


> +void JavaJIT::lowerArraycopy(std::vector<Value*>& args) {
> +  assert(0 && "Unable to lower array copy yet!");
>

Change to UNIMPLEMENTED();


> +}
> +
> --
> 1.7.5.1
> _______________________________________________
> vmkit-commits mailing list
> vmkit-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/vmkit-commits/attachments/20111027/80c2f56b/attachment.html>


More information about the vmkit-commits mailing list