summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/jit/JITStubCall.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/jit/JITStubCall.h')
-rw-r--r--Source/JavaScriptCore/jit/JITStubCall.h32
1 files changed, 23 insertions, 9 deletions
diff --git a/Source/JavaScriptCore/jit/JITStubCall.h b/Source/JavaScriptCore/jit/JITStubCall.h
index 352956559..25755886a 100644
--- a/Source/JavaScriptCore/jit/JITStubCall.h
+++ b/Source/JavaScriptCore/jit/JITStubCall.h
@@ -94,15 +94,15 @@ namespace JSC {
{
}
-#if USE(JSVALUE32_64)
JITStubCall(JIT* jit, EncodedJSValue (JIT_STUB *stub)(STUB_ARGS_DECLARATION))
: m_jit(jit)
, m_stub(stub)
+#if USE(JSVALUE32_64) || !ASSERT_DISABLED
, m_returnType(Value)
+#endif
, m_stackIndex(JITSTACKFRAME_ARGS_INDEX)
{
}
-#endif
// Arguments are added first to last.
@@ -137,7 +137,11 @@ namespace JSC {
void addArgument(JIT::RegisterID argument)
{
+#if USE(JSVALUE32_64)
m_jit->poke(argument, m_stackIndex);
+#else
+ m_jit->poke64(argument, m_stackIndex);
+#endif
m_stackIndex += stackIndexStep;
}
@@ -148,6 +152,18 @@ namespace JSC {
m_jit->poke(JIT::Imm32(value.tag()), m_stackIndex + 1);
m_stackIndex += stackIndexStep;
}
+#else
+ void addArgument(JIT::TrustedImm64 argument)
+ {
+ m_jit->poke(argument, m_stackIndex);
+ m_stackIndex += stackIndexStep;
+ }
+
+ void addArgument(JIT::Imm64 argument)
+ {
+ m_jit->poke(argument, m_stackIndex);
+ m_stackIndex += stackIndexStep;
+ }
#endif
void addArgument(JIT::RegisterID tag, JIT::RegisterID payload)
@@ -179,9 +195,9 @@ namespace JSC {
void addArgument(unsigned src, JIT::RegisterID scratchRegister) // src is a virtual register.
{
if (m_jit->m_codeBlock->isConstantRegisterIndex(src))
- addArgument(JIT::ImmPtr(JSValue::encode(m_jit->m_codeBlock->getConstant(src))));
+ addArgument(JIT::Imm64(JSValue::encode(m_jit->m_codeBlock->getConstant(src))));
else {
- m_jit->loadPtr(JIT::Address(JIT::callFrameRegister, src * sizeof(Register)), scratchRegister);
+ m_jit->load64(JIT::Address(JIT::callFrameRegister, src * sizeof(Register)), scratchRegister);
addArgument(scratchRegister);
}
m_jit->killLastResultRegister();
@@ -242,7 +258,7 @@ namespace JSC {
#else
JIT::Call call(unsigned dst) // dst is a virtual register.
{
- ASSERT(m_returnType == VoidPtr || m_returnType == Cell);
+ ASSERT(m_returnType == Value || m_returnType == Cell);
JIT::Call call = this->call();
m_jit->emitPutVirtualRegister(dst);
return call;
@@ -250,7 +266,7 @@ namespace JSC {
JIT::Call callWithValueProfiling(unsigned dst)
{
- ASSERT(m_returnType == VoidPtr || m_returnType == Cell);
+ ASSERT(m_returnType == Value || m_returnType == Cell);
JIT::Call call = this->call();
ASSERT(JIT::returnValueRegister == JIT::regT0);
m_jit->emitValueProfilingSite();
@@ -261,10 +277,8 @@ namespace JSC {
JIT::Call call(JIT::RegisterID dst) // dst is a machine register.
{
-#if USE(JSVALUE32_64)
+#if USE(JSVALUE32_64) || !ASSERT_DISABLED
ASSERT(m_returnType == Value || m_returnType == VoidPtr || m_returnType == Int || m_returnType == Cell);
-#else
- ASSERT(m_returnType == VoidPtr || m_returnType == Int || m_returnType == Cell);
#endif
JIT::Call call = this->call();
if (dst != JIT::returnValueRegister)