summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/jit/JSInterfaceJIT.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/jit/JSInterfaceJIT.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/JavaScriptCore/jit/JSInterfaceJIT.h')
-rw-r--r--Source/JavaScriptCore/jit/JSInterfaceJIT.h56
1 files changed, 21 insertions, 35 deletions
diff --git a/Source/JavaScriptCore/jit/JSInterfaceJIT.h b/Source/JavaScriptCore/jit/JSInterfaceJIT.h
index ac1ab7965..dc0cc1a4f 100644
--- a/Source/JavaScriptCore/jit/JSInterfaceJIT.h
+++ b/Source/JavaScriptCore/jit/JSInterfaceJIT.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010, 2016 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -23,8 +23,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef JSInterfaceJIT_h
-#define JSInterfaceJIT_h
+#pragma once
#include "BytecodeConventions.h"
#include "CCallHelpers.h"
@@ -32,12 +31,9 @@
#include "GPRInfo.h"
#include "JITCode.h"
#include "JITOperations.h"
-#include "JITStubs.h"
#include "JSCJSValue.h"
-#include "JSStack.h"
#include "JSString.h"
#include "MacroAssembler.h"
-#include <wtf/Vector.h>
#if ENABLE(JIT)
@@ -50,9 +46,7 @@ namespace JSC {
}
#if USE(JSVALUE32_64)
- // Can't just propogate JSValue::Int32Tag as visual studio doesn't like it
- static const unsigned Int32Tag = 0xffffffff;
- COMPILE_ASSERT(Int32Tag == JSValue::Int32Tag, Int32Tag_out_of_sync);
+ static const unsigned Int32Tag = static_cast<unsigned>(JSValue::Int32Tag);
#else
static const unsigned Int32Tag = static_cast<unsigned>(TagTypeNumber >> 32);
#endif
@@ -67,18 +61,17 @@ namespace JSC {
#if USE(JSVALUE64)
Jump emitJumpIfNotJSCell(RegisterID);
- Jump emitJumpIfImmediateNumber(RegisterID reg);
- Jump emitJumpIfNotImmediateNumber(RegisterID reg);
- void emitFastArithImmToInt(RegisterID reg);
- void emitFastArithIntToImmNoCheck(RegisterID src, RegisterID dest);
+ Jump emitJumpIfNumber(RegisterID);
+ Jump emitJumpIfNotNumber(RegisterID);
+ void emitTagInt(RegisterID src, RegisterID dest);
#endif
- Jump emitJumpIfNotType(RegisterID baseReg, RegisterID scratchReg, JSType);
+ Jump emitJumpIfNotType(RegisterID baseReg, JSType);
- void emitGetFromCallFrameHeaderPtr(JSStack::CallFrameHeaderEntry, RegisterID to, RegisterID from = callFrameRegister);
- void emitPutToCallFrameHeader(RegisterID from, JSStack::CallFrameHeaderEntry);
- void emitPutImmediateToCallFrameHeader(void* value, JSStack::CallFrameHeaderEntry);
- void emitPutCellToCallFrameHeader(RegisterID from, JSStack::CallFrameHeaderEntry);
+ void emitGetFromCallFrameHeaderPtr(int entry, RegisterID to, RegisterID from = callFrameRegister);
+ void emitPutToCallFrameHeader(RegisterID from, int entry);
+ void emitPutToCallFrameHeader(void* value, int entry);
+ void emitPutCellToCallFrameHeader(RegisterID from, int entry);
inline Address payloadFor(int index, RegisterID base = callFrameRegister);
inline Address intPayloadFor(int index, RegisterID base = callFrameRegister);
@@ -156,11 +149,11 @@ namespace JSC {
return branchTest64(NonZero, reg, tagMaskRegister);
}
- ALWAYS_INLINE JSInterfaceJIT::Jump JSInterfaceJIT::emitJumpIfImmediateNumber(RegisterID reg)
+ ALWAYS_INLINE JSInterfaceJIT::Jump JSInterfaceJIT::emitJumpIfNumber(RegisterID reg)
{
return branchTest64(NonZero, reg, tagTypeNumberRegister);
}
- ALWAYS_INLINE JSInterfaceJIT::Jump JSInterfaceJIT::emitJumpIfNotImmediateNumber(RegisterID reg)
+ ALWAYS_INLINE JSInterfaceJIT::Jump JSInterfaceJIT::emitJumpIfNotNumber(RegisterID reg)
{
return branchTest64(Zero, reg, tagTypeNumberRegister);
}
@@ -181,7 +174,7 @@ namespace JSC {
inline JSInterfaceJIT::Jump JSInterfaceJIT::emitLoadDouble(unsigned virtualRegisterIndex, FPRegisterID dst, RegisterID scratch)
{
load64(addressFor(virtualRegisterIndex), scratch);
- Jump notNumber = emitJumpIfNotImmediateNumber(scratch);
+ Jump notNumber = emitJumpIfNotNumber(scratch);
Jump notInt = branch64(Below, scratch, tagTypeNumberRegister);
convertInt32ToDouble(scratch, dst);
Jump done = jump();
@@ -192,12 +185,8 @@ namespace JSC {
return notNumber;
}
- ALWAYS_INLINE void JSInterfaceJIT::emitFastArithImmToInt(RegisterID)
- {
- }
-
// operand is int32_t, must have been zero-extended if register is 64-bit.
- ALWAYS_INLINE void JSInterfaceJIT::emitFastArithIntToImmNoCheck(RegisterID src, RegisterID dest)
+ ALWAYS_INLINE void JSInterfaceJIT::emitTagInt(RegisterID src, RegisterID dest)
{
if (src != dest)
move(src, dest);
@@ -224,18 +213,17 @@ namespace JSC {
}
#endif
- ALWAYS_INLINE JSInterfaceJIT::Jump JSInterfaceJIT::emitJumpIfNotType(RegisterID baseReg, RegisterID scratchReg, JSType type)
+ ALWAYS_INLINE JSInterfaceJIT::Jump JSInterfaceJIT::emitJumpIfNotType(RegisterID baseReg, JSType type)
{
- loadPtr(Address(baseReg, JSCell::structureOffset()), scratchReg);
- return branch8(NotEqual, Address(scratchReg, Structure::typeInfoTypeOffset()), TrustedImm32(type));
+ return branch8(NotEqual, Address(baseReg, JSCell::typeInfoTypeOffset()), TrustedImm32(type));
}
- ALWAYS_INLINE void JSInterfaceJIT::emitGetFromCallFrameHeaderPtr(JSStack::CallFrameHeaderEntry entry, RegisterID to, RegisterID from)
+ ALWAYS_INLINE void JSInterfaceJIT::emitGetFromCallFrameHeaderPtr(int entry, RegisterID to, RegisterID from)
{
loadPtr(Address(from, entry * sizeof(Register)), to);
}
- ALWAYS_INLINE void JSInterfaceJIT::emitPutToCallFrameHeader(RegisterID from, JSStack::CallFrameHeaderEntry entry)
+ ALWAYS_INLINE void JSInterfaceJIT::emitPutToCallFrameHeader(RegisterID from, int entry)
{
#if USE(JSVALUE32_64)
storePtr(from, payloadFor(entry, callFrameRegister));
@@ -244,12 +232,12 @@ namespace JSC {
#endif
}
- ALWAYS_INLINE void JSInterfaceJIT::emitPutImmediateToCallFrameHeader(void* value, JSStack::CallFrameHeaderEntry entry)
+ ALWAYS_INLINE void JSInterfaceJIT::emitPutToCallFrameHeader(void* value, int entry)
{
storePtr(TrustedImmPtr(value), Address(callFrameRegister, entry * sizeof(Register)));
}
- ALWAYS_INLINE void JSInterfaceJIT::emitPutCellToCallFrameHeader(RegisterID from, JSStack::CallFrameHeaderEntry entry)
+ ALWAYS_INLINE void JSInterfaceJIT::emitPutCellToCallFrameHeader(RegisterID from, int entry)
{
#if USE(JSVALUE32_64)
store32(TrustedImm32(JSValue::CellTag), tagFor(entry, callFrameRegister));
@@ -268,5 +256,3 @@ namespace JSC {
} // namespace JSC
#endif // ENABLE(JIT)
-
-#endif // JSInterfaceJIT_h