Home | History | Annotate | Download | only in Reactor
      1 // Copyright 2016 The SwiftShader Authors. All Rights Reserved.
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //    http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 #include "LLVMRoutine.hpp"
     16 
     17 #include "../Common/Memory.hpp"
     18 #include "../Common/Thread.hpp"
     19 #include "../Common/Types.hpp"
     20 
     21 namespace sw
     22 {
     23 	LLVMRoutine::LLVMRoutine(int bufferSize) : bufferSize(bufferSize)
     24 	{
     25 		void *memory = allocateExecutable(bufferSize);
     26 
     27 		buffer = memory;
     28 		entry = memory;
     29 		functionSize = bufferSize;   // Updated by LLVMRoutineManager::endFunctionBody
     30 	}
     31 
     32 	LLVMRoutine::~LLVMRoutine()
     33 	{
     34 		deallocateExecutable(buffer, bufferSize);
     35 	}
     36 
     37 	const void *LLVMRoutine::getEntry()
     38 	{
     39 		return entry;
     40 	}
     41 
     42 	int LLVMRoutine::getCodeSize()
     43 	{
     44 		return functionSize - static_cast<int>((uintptr_t)entry - (uintptr_t)buffer);
     45 	}
     46 }
     47