diff options
Diffstat (limited to 'Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp')
-rw-r--r-- | Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp | 54 |
1 files changed, 10 insertions, 44 deletions
diff --git a/Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp b/Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp index 3da48486a..a8a99b63a 100644 --- a/Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp +++ b/Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013, 2014 Apple Inc. All rights reserved. + * Copyright (C) 2013 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -31,7 +31,6 @@ #include "CodeBlockWithJITType.h" #include "DFGPlan.h" #include "FTLThunks.h" -#include "ProfilerDatabase.h" namespace JSC { namespace FTL { @@ -46,25 +45,6 @@ JITFinalizer::~JITFinalizer() { } -size_t JITFinalizer::codeSize() -{ - size_t result = 0; - - if (exitThunksLinkBuffer) - result += exitThunksLinkBuffer->size(); - if (entrypointLinkBuffer) - result += entrypointLinkBuffer->size(); - if (sideCodeLinkBuffer) - result += sideCodeLinkBuffer->size(); - if (handleExceptionsLinkBuffer) - result += handleExceptionsLinkBuffer->size(); - - for (unsigned i = jitCode->handles().size(); i--;) - result += jitCode->handles()[i]->sizeInBytes(); - - return result; -} - bool JITFinalizer::finalize() { RELEASE_ASSERT_NOT_REACHED(); @@ -79,7 +59,7 @@ bool JITFinalizer::finalizeFunction() } if (exitThunksLinkBuffer) { - StackMaps::RecordMap recordMap = jitCode->stackmaps.computeRecordMap(); + StackMaps::RecordMap recordMap = jitCode->stackmaps.getRecordMap(); for (unsigned i = 0; i < osrExit.size(); ++i) { OSRExitCompilationInfo& info = osrExit[i]; @@ -93,7 +73,9 @@ bool JITFinalizer::finalizeFunction() exitThunksLinkBuffer->link( info.m_thunkJump, CodeLocationLabel( - m_plan.vm.getCTIStub(osrExitGenerationThunkGenerator).code())); + m_plan.vm.ftlThunks->getOSRExitGenerationThunk( + m_plan.vm, Location::forStackmaps( + &jitCode->stackmaps, iter->value.locations[0])).code())); } jitCode->initializeExitThunks( @@ -120,31 +102,15 @@ bool JITFinalizer::finalizeFunction() .executableMemory()); } - if (handleExceptionsLinkBuffer) { - jitCode->addHandle(FINALIZE_DFG_CODE( - *handleExceptionsLinkBuffer, - ("FTL exception handler for %s", - toCString(CodeBlockWithJITType(m_plan.codeBlock.get(), JITCode::FTLJIT)).data())) - .executableMemory()); - } - - for (unsigned i = 0; i < outOfLineCodeInfos.size(); ++i) { - jitCode->addHandle(FINALIZE_DFG_CODE( - *outOfLineCodeInfos[i].m_linkBuffer, - ("FTL out of line code for %s", outOfLineCodeInfos[i].m_codeDescription)).executableMemory()); - } - - jitCode->initializeArityCheckEntrypoint( + MacroAssemblerCodePtr withArityCheck; + if (arityCheck.isSet()) + withArityCheck = entrypointLinkBuffer->locationOf(arityCheck); + jitCode->initializeCode( FINALIZE_DFG_CODE( *entrypointLinkBuffer, ("FTL entrypoint thunk for %s with LLVM generated code at %p", toCString(CodeBlockWithJITType(m_plan.codeBlock.get(), JITCode::FTLJIT)).data(), function))); - m_plan.codeBlock->setJITCode(jitCode); - - m_plan.vm.updateFTLLargestStackSize(jitCode->stackmaps.stackSize()); - - if (m_plan.compilation) - m_plan.vm.m_perBytecodeProfiler->addCompilation(m_plan.compilation); + m_plan.codeBlock->setJITCode(jitCode, withArityCheck); return true; } |