summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp')
-rw-r--r--Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp54
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;
}