Reviewers: Jakob,
Description:
Version 4.3.61.4 (cherry-pick)
Merged 845154a896ee7231ec016b6549fb755dfdc496c3
Fix the bug in CompareIC_GenerateNumber for X87 platform.
[email protected]
BUG=
Please review this at https://codereview.chromium.org/1065303004/
Base URL: https://chromium.googlesource.com/v8/[email protected]
Affected files (+6, -6 lines):
M include/v8-version.h
M src/x87/code-stubs-x87.cc
Index: include/v8-version.h
diff --git a/include/v8-version.h b/include/v8-version.h
index
74870bae6b1d47fadf28fcc4fa34d46edabc36f5..e5c2a590bc9b72c25fe2bd212a1fce5ae04fb448
100644
--- a/include/v8-version.h
+++ b/include/v8-version.h
@@ -11,7 +11,7 @@
#define V8_MAJOR_VERSION 4
#define V8_MINOR_VERSION 3
#define V8_BUILD_NUMBER 61
-#define V8_PATCH_LEVEL 3
+#define V8_PATCH_LEVEL 4
// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)
Index: src/x87/code-stubs-x87.cc
diff --git a/src/x87/code-stubs-x87.cc b/src/x87/code-stubs-x87.cc
index
4e39ab86297a8e52f75f198763eacb4e6da7e9d8..e6fc7b83e49a3b98b7fdb37d84e2b97ec37da04c
100644
--- a/src/x87/code-stubs-x87.cc
+++ b/src/x87/code-stubs-x87.cc
@@ -3258,7 +3258,7 @@ void CompareICStub::GenerateSmis(MacroAssembler*
masm) {
void CompareICStub::GenerateNumbers(MacroAssembler* masm) {
DCHECK(state() == CompareICState::NUMBER);
- Label generic_stub;
+ Label generic_stub, check_left;
Label unordered, maybe_undefined1, maybe_undefined2;
Label miss;
@@ -3271,13 +3271,13 @@ void CompareICStub::GenerateNumbers(MacroAssembler*
masm) {
// Inlining the double comparison and falling back to the general compare
// stub if NaN is involved or SSE2 or CMOV is unsupported.
- __ mov(ecx, edx);
- __ and_(ecx, eax);
- __ JumpIfSmi(ecx, &generic_stub, Label::kNear);
-
+ __ JumpIfSmi(eax, &check_left, Label::kNear);
__ cmp(FieldOperand(eax, HeapObject::kMapOffset),
isolate()->factory()->heap_number_map());
__ j(not_equal, &maybe_undefined1, Label::kNear);
+
+ __ bind(&check_left);
+ __ JumpIfSmi(edx, &generic_stub, Label::kNear);
__ cmp(FieldOperand(edx, HeapObject::kMapOffset),
isolate()->factory()->heap_number_map());
__ j(not_equal, &maybe_undefined2, Label::kNear);
--
--
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.