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

Side by Side Diff: src/hydrogen-types.cc

Issue 556563005: Fix Smi vs. HeapObject confusion in HConstants. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 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/hydrogen-instructions.cc ('k') | test/mjsunit/regress/regress-crbug-412215.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/hydrogen-types.h" 5 #include "src/hydrogen-types.h"
6 6
7 #include "src/ostreams.h" 7 #include "src/ostreams.h"
8 #include "src/types-inl.h" 8 #include "src/types-inl.h"
9 9
10 10
(...skipping 24 matching lines...) Expand all
35 35
36 // static 36 // static
37 template 37 template
38 HType HType::FromType<HeapType>(Handle<HeapType> type); 38 HType HType::FromType<HeapType>(Handle<HeapType> type);
39 39
40 40
41 // static 41 // static
42 HType HType::FromValue(Handle<Object> value) { 42 HType HType::FromValue(Handle<Object> value) {
43 if (value->IsSmi()) return HType::Smi(); 43 if (value->IsSmi()) return HType::Smi();
44 if (value->IsNull()) return HType::Null(); 44 if (value->IsNull()) return HType::Null();
45 if (value->IsHeapNumber()) return HType::HeapNumber(); 45 if (value->IsHeapNumber()) {
46 double n = Handle<v8::internal::HeapNumber>::cast(value)->value();
47 return IsSmiDouble(n) ? HType::Smi() : HType::HeapNumber();
48 }
46 if (value->IsString()) return HType::String(); 49 if (value->IsString()) return HType::String();
47 if (value->IsBoolean()) return HType::Boolean(); 50 if (value->IsBoolean()) return HType::Boolean();
48 if (value->IsUndefined()) return HType::Undefined(); 51 if (value->IsUndefined()) return HType::Undefined();
49 if (value->IsJSArray()) return HType::JSArray(); 52 if (value->IsJSArray()) return HType::JSArray();
50 if (value->IsJSObject()) return HType::JSObject(); 53 if (value->IsJSObject()) return HType::JSObject();
51 DCHECK(value->IsHeapObject()); 54 DCHECK(value->IsHeapObject());
52 return HType::HeapObject(); 55 return HType::HeapObject();
53 } 56 }
54 57
55 58
56 OStream& operator<<(OStream& os, const HType& t) { 59 OStream& operator<<(OStream& os, const HType& t) {
57 // Note: The c1visualizer syntax for locals allows only a sequence of the 60 // Note: The c1visualizer syntax for locals allows only a sequence of the
58 // following characters: A-Za-z0-9_-|: 61 // following characters: A-Za-z0-9_-|:
59 switch (t.kind_) { 62 switch (t.kind_) {
60 #define DEFINE_CASE(Name, mask) \ 63 #define DEFINE_CASE(Name, mask) \
61 case HType::k##Name: \ 64 case HType::k##Name: \
62 return os << #Name; 65 return os << #Name;
63 HTYPE_LIST(DEFINE_CASE) 66 HTYPE_LIST(DEFINE_CASE)
64 #undef DEFINE_CASE 67 #undef DEFINE_CASE
65 } 68 }
66 UNREACHABLE(); 69 UNREACHABLE();
67 return os; 70 return os;
68 } 71 }
69 72
70 } } // namespace v8::internal 73 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/hydrogen-instructions.cc ('k') | test/mjsunit/regress/regress-crbug-412215.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698