Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: src/checks.cc

Issue 426233002: Land the Fan (disabled) (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/checks.h ('k') | src/code-stubs.h » ('j') | src/lithium-inl.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/checks.h" 5 #include "src/checks.h"
6 6
7 #include "src/v8.h" 7 #include "src/v8.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
11 11
12 intptr_t HeapObjectTagMask() { return kHeapObjectTagMask; } 12 intptr_t HeapObjectTagMask() { return kHeapObjectTagMask; }
13 13
14 } } // namespace v8::internal 14 } } // namespace v8::internal
15 15
16 16
17 static bool CheckEqualsStrict(volatile double* exp, volatile double* val) {
18 v8::internal::DoubleRepresentation exp_rep(*exp);
19 v8::internal::DoubleRepresentation val_rep(*val);
20 if (std::isnan(exp_rep.value) && std::isnan(val_rep.value)) return true;
21 return exp_rep.bits == val_rep.bits;
22 }
23
24
17 void CheckEqualsHelper(const char* file, 25 void CheckEqualsHelper(const char* file,
18 int line, 26 int line,
19 const char* expected_source, 27 const char* expected_source,
28 double expected,
29 const char* value_source,
30 double value) {
31 // Force values to 64 bit memory to truncate 80 bit precision on IA32.
32 volatile double* exp = new double[1];
33 *exp = expected;
34 volatile double* val = new double[1];
35 *val = value;
36 if (!CheckEqualsStrict(exp, val)) {
37 V8_Fatal(file, line,
38 "CHECK_EQ(%s, %s) failed\n# Expected: %f\n# Found: %f",
39 expected_source, value_source, *exp, *val);
40 }
41 delete[] exp;
42 delete[] val;
43 }
44
45
46 void CheckNonEqualsHelper(const char* file,
47 int line,
48 const char* expected_source,
49 double expected,
50 const char* value_source,
51 double value) {
52 // Force values to 64 bit memory to truncate 80 bit precision on IA32.
53 volatile double* exp = new double[1];
54 *exp = expected;
55 volatile double* val = new double[1];
56 *val = value;
57 if (CheckEqualsStrict(exp, val)) {
58 V8_Fatal(file, line,
59 "CHECK_EQ(%s, %s) failed\n# Expected: %f\n# Found: %f",
60 expected_source, value_source, *exp, *val);
61 }
62 delete[] exp;
63 delete[] val;
64 }
65
66
67 void CheckEqualsHelper(const char* file,
68 int line,
69 const char* expected_source,
20 v8::Handle<v8::Value> expected, 70 v8::Handle<v8::Value> expected,
21 const char* value_source, 71 const char* value_source,
22 v8::Handle<v8::Value> value) { 72 v8::Handle<v8::Value> value) {
23 if (!expected->Equals(value)) { 73 if (!expected->Equals(value)) {
24 v8::String::Utf8Value value_str(value); 74 v8::String::Utf8Value value_str(value);
25 v8::String::Utf8Value expected_str(expected); 75 v8::String::Utf8Value expected_str(expected);
26 V8_Fatal(file, line, 76 V8_Fatal(file, line,
27 "CHECK_EQ(%s, %s) failed\n# Expected: %s\n# Found: %s", 77 "CHECK_EQ(%s, %s) failed\n# Expected: %s\n# Found: %s",
28 expected_source, value_source, *expected_str, *value_str); 78 expected_source, value_source, *expected_str, *value_str);
29 } 79 }
30 } 80 }
31 81
32 82
33 void CheckNonEqualsHelper(const char* file, 83 void CheckNonEqualsHelper(const char* file,
34 int line, 84 int line,
35 const char* unexpected_source, 85 const char* unexpected_source,
36 v8::Handle<v8::Value> unexpected, 86 v8::Handle<v8::Value> unexpected,
37 const char* value_source, 87 const char* value_source,
38 v8::Handle<v8::Value> value) { 88 v8::Handle<v8::Value> value) {
39 if (unexpected->Equals(value)) { 89 if (unexpected->Equals(value)) {
40 v8::String::Utf8Value value_str(value); 90 v8::String::Utf8Value value_str(value);
41 V8_Fatal(file, line, "CHECK_NE(%s, %s) failed\n# Value: %s", 91 V8_Fatal(file, line, "CHECK_NE(%s, %s) failed\n# Value: %s",
42 unexpected_source, value_source, *value_str); 92 unexpected_source, value_source, *value_str);
43 } 93 }
44 } 94 }
OLDNEW
« no previous file with comments | « src/checks.h ('k') | src/code-stubs.h » ('j') | src/lithium-inl.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698