}
+void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) {
+ Register registers[] = {cp, r1, r0};
+ data->Initialize(arraysize(registers), registers, NULL);
+}
+
+
void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) {
Register registers[] = {cp, r0};
data->Initialize(arraysize(registers), registers, NULL);
}
+void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) {
+ // cp: context
+ // x1: left operand
+ // x0: right operand
+ Register registers[] = {cp, x1, x0};
+ data->Initialize(arraysize(registers), registers, NULL);
+}
+
+
void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) {
// cp: context
// x0: value to compare
// static
Callable CodeFactory::CompareIC(Isolate* isolate, Token::Value op) {
Handle<Code> code = CompareIC::GetUninitialized(isolate, op);
- return Callable(code, BinaryOpDescriptor(isolate));
+ return Callable(code, CompareDescriptor(isolate));
}
}
+void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) {
+ Register registers[] = {esi, edx, eax};
+ data->Initialize(arraysize(registers), registers, NULL);
+}
+
+
void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) {
Register registers[] = {esi, eax};
data->Initialize(arraysize(registers), registers, NULL);
V(ArrayConstructor) \
V(InternalArrayConstructorConstantArgCount) \
V(InternalArrayConstructor) \
+ V(Compare) \
V(CompareNil) \
V(ToBoolean) \
V(BinaryOp) \
};
+class CompareDescriptor : public CallInterfaceDescriptor {
+ public:
+ DECLARE_DESCRIPTOR(CompareDescriptor, CallInterfaceDescriptor)
+};
+
+
class CompareNilDescriptor : public CallInterfaceDescriptor {
public:
DECLARE_DESCRIPTOR(CompareNilDescriptor, CallInterfaceDescriptor)
}
+void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) {
+ Register registers[] = {cp, a1, a0};
+ data->Initialize(arraysize(registers), registers, NULL);
+}
+
+
void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) {
Register registers[] = {cp, a0};
data->Initialize(arraysize(registers), registers, NULL);
}
+void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) {
+ Register registers[] = {cp, a1, a0};
+ data->Initialize(arraysize(registers), registers, NULL);
+}
+
+
void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) {
Register registers[] = {cp, a0};
data->Initialize(arraysize(registers), registers, NULL);
}
+void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) {
+ Register registers[] = {cp, r4, r3};
+ data->Initialize(arraysize(registers), registers, NULL);
+}
+
+
void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) {
Register registers[] = {cp, r3};
data->Initialize(arraysize(registers), registers, NULL);
}
+void CompareDescriptor::Initialize(CallInterfaceDescriptorData* data) {
+ Register registers[] = {rsi, rdx, rax};
+ data->Initialize(arraysize(registers), registers, NULL);
+}
+
+
void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) {
Register registers[] = {rsi, rax};
data->Initialize(arraysize(registers), registers, NULL);