Revision: 22456
Author: [email protected]
Date: Thu Jul 17 18:24:59 2014 UTC
Log: MIPS: StubCallInterfaceDescriptor and CallInterfaceDescriptor are
unified under a base class InterfaceDescriptor.
Port r22448 (a9e0b0e)
Original commit message:
Handling of the context register had to be massaged to effect the
unification. This will make it easier to call hydrogen code stubs directly
from crankshaft.
BUG=
[email protected], [email protected]
Review URL: https://codereview.chromium.org/400743002
http://code.google.com/p/v8/source/detail?r=22456
Modified:
/branches/bleeding_edge/src/mips/code-stubs-mips.cc
/branches/bleeding_edge/src/mips/lithium-mips.cc
/branches/bleeding_edge/src/mips/lithium-mips.h
/branches/bleeding_edge/src/mips64/code-stubs-mips64.cc
/branches/bleeding_edge/src/mips64/lithium-mips64.cc
/branches/bleeding_edge/src/mips64/lithium-mips64.h
=======================================
--- /branches/bleeding_edge/src/mips/code-stubs-mips.cc Tue Jul 15 08:40:26
2014 UTC
+++ /branches/bleeding_edge/src/mips/code-stubs-mips.cc Thu Jul 17 18:24:59
2014 UTC
@@ -18,7 +18,7 @@
void FastNewClosureStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a2 };
+ Register registers[] = { cp, a2 };
descriptor->Initialize(
ARRAY_SIZE(registers), registers,
Runtime::FunctionForId(Runtime::kNewClosureFromStubFailure)->entry);
@@ -27,21 +27,21 @@
void FastNewContextStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a1 };
+ Register registers[] = { cp, a1 };
descriptor->Initialize(ARRAY_SIZE(registers), registers);
}
void ToNumberStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a0 };
+ Register registers[] = { cp, a0 };
descriptor->Initialize(ARRAY_SIZE(registers), registers);
}
void NumberToStringStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a0 };
+ Register registers[] = { cp, a0 };
descriptor->Initialize(
ARRAY_SIZE(registers), registers,
Runtime::FunctionForId(Runtime::kNumberToStringRT)->entry);
@@ -50,9 +50,10 @@
void FastCloneShallowArrayStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a3, a2, a1 };
+ Register registers[] = { cp, a3, a2, a1 };
Representation representations[] = {
Representation::Tagged(),
+ Representation::Tagged(),
Representation::Smi(),
Representation::Tagged() };
descriptor->Initialize(
@@ -64,7 +65,7 @@
void FastCloneShallowObjectStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a3, a2, a1, a0 };
+ Register registers[] = { cp, a3, a2, a1, a0 };
descriptor->Initialize(
ARRAY_SIZE(registers), registers,
Runtime::FunctionForId(Runtime::kCreateObjectLiteral)->entry);
@@ -73,14 +74,14 @@
void CreateAllocationSiteStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a2, a3 };
+ Register registers[] = { cp, a2, a3 };
descriptor->Initialize(ARRAY_SIZE(registers), registers);
}
void RegExpConstructResultStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a2, a1, a0 };
+ Register registers[] = { cp, a2, a1, a0 };
descriptor->Initialize(
ARRAY_SIZE(registers), registers,
Runtime::FunctionForId(Runtime::kRegExpConstructResult)->entry);
@@ -89,7 +90,7 @@
void TransitionElementsKindStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a0, a1 };
+ Register registers[] = { cp, a0, a1 };
Address entry =
Runtime::FunctionForId(Runtime::kTransitionElementsKind)->entry;
descriptor->Initialize(ARRAY_SIZE(registers), registers,
@@ -99,18 +100,22 @@
void CompareNilICStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a0 };
+ Register registers[] = { cp, a0 };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
FUNCTION_ADDR(CompareNilIC_Miss));
descriptor->SetMissHandler(
ExternalReference(IC_Utility(IC::kCompareNilIC_Miss), isolate()));
}
+
+
+const Register InterfaceDescriptor::ContextRegister() { return cp; }
static void InitializeArrayConstructorDescriptor(
CodeStubInterfaceDescriptor* descriptor,
int constant_stack_parameter_count) {
// register state
+ // cp -- context
// a0 -- number of arguments
// a1 -- function
// a2 -- allocation site with elements kind
@@ -118,7 +123,7 @@
Runtime::kArrayConstructor)->entry;
if (constant_stack_parameter_count == 0) {
- Register registers[] = { a1, a2 };
+ Register registers[] = { cp, a1, a2 };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
deopt_handler,
NULL,
@@ -126,10 +131,11 @@
JS_FUNCTION_STUB_MODE);
} else {
// stack param count needs (constructor pointer, and single argument)
- Register registers[] = { a1, a2, a0 };
+ Register registers[] = { cp, a1, a2, a0 };
Representation representations[] = {
Representation::Tagged(),
Representation::Tagged(),
+ Representation::Tagged(),
Representation::Integer32() };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
a0,
@@ -146,13 +152,14 @@
CodeStubInterfaceDescriptor* descriptor,
int constant_stack_parameter_count) {
// register state
+ // cp -- context
// a0 -- number of arguments
// a1 -- constructor function
Address deopt_handler = Runtime::FunctionForId(
Runtime::kInternalArrayConstructor)->entry;
if (constant_stack_parameter_count == 0) {
- Register registers[] = { a1 };
+ Register registers[] = { cp, a1 };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
deopt_handler,
NULL,
@@ -160,9 +167,10 @@
JS_FUNCTION_STUB_MODE);
} else {
// stack param count needs (constructor pointer, and single argument)
- Register registers[] = { a1, a0 };
+ Register registers[] = { cp, a1, a0 };
Representation representations[] = {
Representation::Tagged(),
+ Representation::Tagged(),
Representation::Integer32() };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
a0,
@@ -195,7 +203,7 @@
void ToBooleanStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a0 };
+ Register registers[] = { cp, a0 };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
FUNCTION_ADDR(ToBooleanIC_Miss));
descriptor->SetMissHandler(
@@ -223,7 +231,7 @@
void BinaryOpICStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a1, a0 };
+ Register registers[] = { cp, a1, a0 };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
FUNCTION_ADDR(BinaryOpIC_Miss));
descriptor->SetMissHandler(
@@ -233,7 +241,7 @@
void BinaryOpWithAllocationSiteStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a2, a1, a0 };
+ Register registers[] = { cp, a2, a1, a0 };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
FUNCTION_ADDR(BinaryOpIC_MissWithAllocationSite));
}
@@ -241,7 +249,7 @@
void StringAddStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a1, a0 };
+ Register registers[] = { cp, a1, a0 };
descriptor->Initialize(
ARRAY_SIZE(registers), registers,
Runtime::FunctionForId(Runtime::kStringAdd)->entry);
@@ -252,14 +260,14 @@
{
CallInterfaceDescriptor* descriptor =
isolate->call_descriptor(Isolate::ArgumentAdaptorCall);
- Register registers[] = { a1, // JSFunction
- cp, // context
+ Register registers[] = { cp, // context,
+ a1, // JSFunction
a0, // actual number of arguments
a2, // expected number of arguments
};
Representation representations[] = {
+ Representation::Tagged(), // context
Representation::Tagged(), // JSFunction
- Representation::Tagged(), // context
Representation::Integer32(), // actual number of arguments
Representation::Integer32(), // expected number of arguments
};
@@ -304,18 +312,18 @@
{
CallInterfaceDescriptor* descriptor =
isolate->call_descriptor(Isolate::ApiFunctionCall);
- Register registers[] = { a0, // callee
+ Register registers[] = { cp, // context
+ a0, // callee
t0, // call_data
a2, // holder
a1, // api_function_address
- cp, // context
};
Representation representations[] = {
+ Representation::Tagged(), // context
Representation::Tagged(), // callee
Representation::Tagged(), // call_data
Representation::Tagged(), // holder
Representation::External(), // api_function_address
- Representation::Tagged(), // context
};
descriptor->Initialize(ARRAY_SIZE(registers), registers,
representations);
}
@@ -344,21 +352,22 @@
isolate()->counters()->code_stubs()->Increment();
CodeStubInterfaceDescriptor* descriptor = GetInterfaceDescriptor();
- int param_count = descriptor->register_param_count();
+ int param_count = descriptor->GetEnvironmentParameterCount();
{
// Call the runtime system in a fresh internal frame.
FrameScope scope(masm, StackFrame::INTERNAL);
- ASSERT(descriptor->register_param_count() == 0 ||
- a0.is(descriptor->GetParameterRegister(param_count - 1)));
+ ASSERT(param_count == 0 ||
+ a0.is(descriptor->GetEnvironmentParameterRegister(
+ param_count - 1)));
// Push arguments, adjust sp.
__ Subu(sp, sp, Operand(param_count * kPointerSize));
for (int i = 0; i < param_count; ++i) {
// Store argument to stack.
- __ sw(descriptor->GetParameterRegister(i),
+ __ sw(descriptor->GetEnvironmentParameterRegister(i),
MemOperand(sp, (param_count-1-i) * kPointerSize));
}
ExternalReference miss = descriptor->miss_handler();
- __ CallExternalReference(miss, descriptor->register_param_count());
+ __ CallExternalReference(miss, param_count);
}
__ Ret();
=======================================
--- /branches/bleeding_edge/src/mips/lithium-mips.cc Fri Jul 11 01:50:12
2014 UTC
+++ /branches/bleeding_edge/src/mips/lithium-mips.cc Thu Jul 17 18:24:59
2014 UTC
@@ -1086,7 +1086,7 @@
LInstruction* LChunkBuilder::DoCallWithDescriptor(
HCallWithDescriptor* instr) {
- const CallInterfaceDescriptor* descriptor = instr->descriptor();
+ const InterfaceDescriptor* descriptor = instr->descriptor();
LOperand* target = UseRegisterOrConstantAtStart(instr->target());
ZoneList<LOperand*> ops(instr->OperandCount(), zone());
@@ -2357,7 +2357,7 @@
CodeStubInterfaceDescriptor* descriptor =
info()->code_stub()->GetInterfaceDescriptor();
int index = static_cast<int>(instr->index());
- Register reg = descriptor->GetParameterRegister(index);
+ Register reg = descriptor->GetEnvironmentParameterRegister(index);
return DefineFixed(result, reg);
}
}
=======================================
--- /branches/bleeding_edge/src/mips/lithium-mips.h Fri Jun 20 08:40:11
2014 UTC
+++ /branches/bleeding_edge/src/mips/lithium-mips.h Thu Jul 17 18:24:59
2014 UTC
@@ -1811,18 +1811,18 @@
class LCallWithDescriptor V8_FINAL : public LTemplateResultInstruction<1> {
public:
- LCallWithDescriptor(const CallInterfaceDescriptor* descriptor,
+ LCallWithDescriptor(const InterfaceDescriptor* descriptor,
const ZoneList<LOperand*>& operands,
Zone* zone)
: descriptor_(descriptor),
- inputs_(descriptor->environment_length() + 1, zone) {
- ASSERT(descriptor->environment_length() + 1 == operands.length());
+ inputs_(descriptor->GetRegisterParameterCount() + 1, zone) {
+ ASSERT(descriptor->GetRegisterParameterCount() + 1 ==
operands.length());
inputs_.AddAll(operands, zone);
}
LOperand* target() const { return inputs_[0]; }
- const CallInterfaceDescriptor* descriptor() { return descriptor_; }
+ const InterfaceDescriptor* descriptor() { return descriptor_; }
private:
DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor, "call-with-descriptor")
@@ -1832,7 +1832,7 @@
int arity() const { return hydrogen()->argument_count() - 1; }
- const CallInterfaceDescriptor* descriptor_;
+ const InterfaceDescriptor* descriptor_;
ZoneList<LOperand*> inputs_;
// Iterator support.
=======================================
--- /branches/bleeding_edge/src/mips64/code-stubs-mips64.cc Tue Jul 15
08:40:26 2014 UTC
+++ /branches/bleeding_edge/src/mips64/code-stubs-mips64.cc Thu Jul 17
18:24:59 2014 UTC
@@ -18,7 +18,7 @@
void FastNewClosureStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a2 };
+ Register registers[] = { cp, a2 };
descriptor->Initialize(
ARRAY_SIZE(registers), registers,
Runtime::FunctionForId(Runtime::kNewClosureFromStubFailure)->entry);
@@ -27,21 +27,21 @@
void FastNewContextStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a1 };
+ Register registers[] = { cp, a1 };
descriptor->Initialize(ARRAY_SIZE(registers), registers);
}
void ToNumberStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a0 };
+ Register registers[] = { cp, a0 };
descriptor->Initialize(ARRAY_SIZE(registers), registers);
}
void NumberToStringStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a0 };
+ Register registers[] = { cp, a0 };
descriptor->Initialize(
ARRAY_SIZE(registers), registers,
Runtime::FunctionForId(Runtime::kNumberToStringRT)->entry);
@@ -50,9 +50,10 @@
void FastCloneShallowArrayStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a3, a2, a1 };
+ Register registers[] = { cp, a3, a2, a1 };
Representation representations[] = {
Representation::Tagged(),
+ Representation::Tagged(),
Representation::Smi(),
Representation::Tagged() };
descriptor->Initialize(
@@ -64,7 +65,7 @@
void FastCloneShallowObjectStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a3, a2, a1, a0 };
+ Register registers[] = { cp, a3, a2, a1, a0 };
descriptor->Initialize(
ARRAY_SIZE(registers), registers,
Runtime::FunctionForId(Runtime::kCreateObjectLiteral)->entry);
@@ -73,14 +74,14 @@
void CreateAllocationSiteStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a2, a3 };
+ Register registers[] = { cp, a2, a3 };
descriptor->Initialize(ARRAY_SIZE(registers), registers);
}
void RegExpConstructResultStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a2, a1, a0 };
+ Register registers[] = { cp, a2, a1, a0 };
descriptor->Initialize(
ARRAY_SIZE(registers), registers,
Runtime::FunctionForId(Runtime::kRegExpConstructResult)->entry);
@@ -89,7 +90,7 @@
void TransitionElementsKindStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a0, a1 };
+ Register registers[] = { cp, a0, a1 };
Address entry =
Runtime::FunctionForId(Runtime::kTransitionElementsKind)->entry;
descriptor->Initialize(ARRAY_SIZE(registers), registers,
@@ -99,18 +100,22 @@
void CompareNilICStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a0 };
+ Register registers[] = { cp, a0 };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
FUNCTION_ADDR(CompareNilIC_Miss));
descriptor->SetMissHandler(
ExternalReference(IC_Utility(IC::kCompareNilIC_Miss), isolate()));
}
+
+
+const Register InterfaceDescriptor::ContextRegister() { return cp; }
static void InitializeArrayConstructorDescriptor(
CodeStubInterfaceDescriptor* descriptor,
int constant_stack_parameter_count) {
// register state
+ // cp -- context
// a0 -- number of arguments
// a1 -- function
// a2 -- allocation site with elements kind
@@ -118,7 +123,7 @@
Runtime::kArrayConstructor)->entry;
if (constant_stack_parameter_count == 0) {
- Register registers[] = { a1, a2 };
+ Register registers[] = { cp, a1, a2 };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
deopt_handler,
NULL,
@@ -126,10 +131,11 @@
JS_FUNCTION_STUB_MODE);
} else {
// stack param count needs (constructor pointer, and single argument)
- Register registers[] = { a1, a2, a0 };
+ Register registers[] = { cp, a1, a2, a0 };
Representation representations[] = {
Representation::Tagged(),
Representation::Tagged(),
+ Representation::Tagged(),
Representation::Integer32() };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
a0,
@@ -146,13 +152,14 @@
CodeStubInterfaceDescriptor* descriptor,
int constant_stack_parameter_count) {
// register state
+ // cp -- context
// a0 -- number of arguments
// a1 -- constructor function
Address deopt_handler = Runtime::FunctionForId(
Runtime::kInternalArrayConstructor)->entry;
if (constant_stack_parameter_count == 0) {
- Register registers[] = { a1 };
+ Register registers[] = { cp, a1 };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
deopt_handler,
NULL,
@@ -160,9 +167,10 @@
JS_FUNCTION_STUB_MODE);
} else {
// stack param count needs (constructor pointer, and single argument)
- Register registers[] = { a1, a0 };
+ Register registers[] = { cp, a1, a0 };
Representation representations[] = {
Representation::Tagged(),
+ Representation::Tagged(),
Representation::Integer32() };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
a0,
@@ -195,7 +203,7 @@
void ToBooleanStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a0 };
+ Register registers[] = { cp, a0 };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
FUNCTION_ADDR(ToBooleanIC_Miss));
descriptor->SetMissHandler(
@@ -223,7 +231,7 @@
void BinaryOpICStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a1, a0 };
+ Register registers[] = { cp, a1, a0 };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
FUNCTION_ADDR(BinaryOpIC_Miss));
descriptor->SetMissHandler(
@@ -233,7 +241,7 @@
void BinaryOpWithAllocationSiteStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a2, a1, a0 };
+ Register registers[] = { cp, a2, a1, a0 };
descriptor->Initialize(ARRAY_SIZE(registers), registers,
FUNCTION_ADDR(BinaryOpIC_MissWithAllocationSite));
}
@@ -241,7 +249,7 @@
void StringAddStub::InitializeInterfaceDescriptor(
CodeStubInterfaceDescriptor* descriptor) {
- Register registers[] = { a1, a0 };
+ Register registers[] = { cp, a1, a0 };
descriptor->Initialize(
ARRAY_SIZE(registers), registers,
Runtime::FunctionForId(Runtime::kStringAdd)->entry);
@@ -252,14 +260,14 @@
{
CallInterfaceDescriptor* descriptor =
isolate->call_descriptor(Isolate::ArgumentAdaptorCall);
- Register registers[] = { a1, // JSFunction
- cp, // context
+ Register registers[] = { cp, // context
+ a1, // JSFunction
a0, // actual number of arguments
a2, // expected number of arguments
};
Representation representations[] = {
+ Representation::Tagged(), // context
Representation::Tagged(), // JSFunction
- Representation::Tagged(), // context
Representation::Integer32(), // actual number of arguments
Representation::Integer32(), // expected number of arguments
};
@@ -304,18 +312,18 @@
{
CallInterfaceDescriptor* descriptor =
isolate->call_descriptor(Isolate::ApiFunctionCall);
- Register registers[] = { a0, // callee
+ Register registers[] = { cp, // context
+ a0, // callee
a4, // call_data
a2, // holder
a1, // api_function_address
- cp, // context
};
Representation representations[] = {
+ Representation::Tagged(), // context
Representation::Tagged(), // callee
Representation::Tagged(), // call_data
Representation::Tagged(), // holder
Representation::External(), // api_function_address
- Representation::Tagged(), // context
};
descriptor->Initialize(ARRAY_SIZE(registers), registers,
representations);
}
@@ -344,21 +352,21 @@
isolate()->counters()->code_stubs()->Increment();
CodeStubInterfaceDescriptor* descriptor = GetInterfaceDescriptor();
- int param_count = descriptor->register_param_count();
+ int param_count = descriptor->GetEnvironmentParameterCount();
{
// Call the runtime system in a fresh internal frame.
FrameScope scope(masm, StackFrame::INTERNAL);
- ASSERT(descriptor->register_param_count() == 0 ||
- a0.is(descriptor->GetParameterRegister(param_count - 1)));
+ ASSERT((param_count == 0) ||
+ a0.is(descriptor->GetEnvironmentParameterRegister(param_count -
1)));
// Push arguments, adjust sp.
__ Dsubu(sp, sp, Operand(param_count * kPointerSize));
for (int i = 0; i < param_count; ++i) {
// Store argument to stack.
- __ sd(descriptor->GetParameterRegister(i),
+ __ sd(descriptor->GetEnvironmentParameterRegister(i),
MemOperand(sp, (param_count-1-i) * kPointerSize));
}
ExternalReference miss = descriptor->miss_handler();
- __ CallExternalReference(miss, descriptor->register_param_count());
+ __ CallExternalReference(miss, param_count);
}
__ Ret();
=======================================
--- /branches/bleeding_edge/src/mips64/lithium-mips64.cc Fri Jul 11
01:50:12 2014 UTC
+++ /branches/bleeding_edge/src/mips64/lithium-mips64.cc Thu Jul 17
18:24:59 2014 UTC
@@ -1086,7 +1086,7 @@
LInstruction* LChunkBuilder::DoCallWithDescriptor(
HCallWithDescriptor* instr) {
- const CallInterfaceDescriptor* descriptor = instr->descriptor();
+ const InterfaceDescriptor* descriptor = instr->descriptor();
LOperand* target = UseRegisterOrConstantAtStart(instr->target());
ZoneList<LOperand*> ops(instr->OperandCount(), zone());
@@ -2356,7 +2356,7 @@
CodeStubInterfaceDescriptor* descriptor =
info()->code_stub()->GetInterfaceDescriptor();
int index = static_cast<int>(instr->index());
- Register reg = descriptor->GetParameterRegister(index);
+ Register reg = descriptor->GetEnvironmentParameterRegister(index);
return DefineFixed(result, reg);
}
}
=======================================
--- /branches/bleeding_edge/src/mips64/lithium-mips64.h Wed Jul 9 11:08:26
2014 UTC
+++ /branches/bleeding_edge/src/mips64/lithium-mips64.h Thu Jul 17 18:24:59
2014 UTC
@@ -1810,18 +1810,18 @@
class LCallWithDescriptor V8_FINAL : public LTemplateResultInstruction<1> {
public:
- LCallWithDescriptor(const CallInterfaceDescriptor* descriptor,
+ LCallWithDescriptor(const InterfaceDescriptor* descriptor,
const ZoneList<LOperand*>& operands,
Zone* zone)
: descriptor_(descriptor),
- inputs_(descriptor->environment_length() + 1, zone) {
- ASSERT(descriptor->environment_length() + 1 == operands.length());
+ inputs_(descriptor->GetRegisterParameterCount() + 1, zone) {
+ ASSERT(descriptor->GetRegisterParameterCount() + 1 ==
operands.length());
inputs_.AddAll(operands, zone);
}
LOperand* target() const { return inputs_[0]; }
- const CallInterfaceDescriptor* descriptor() { return descriptor_; }
+ const InterfaceDescriptor* descriptor() { return descriptor_; }
private:
DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor, "call-with-descriptor")
@@ -1831,7 +1831,7 @@
int arity() const { return hydrogen()->argument_count() - 1; }
- const CallInterfaceDescriptor* descriptor_;
+ const InterfaceDescriptor* descriptor_;
ZoneList<LOperand*> inputs_;
// Iterator support.
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.