OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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.h" | 5 #include "src/hydrogen.h" |
6 | 6 |
7 #include <sstream> | 7 #include <sstream> |
8 | 8 |
9 #include "src/v8.h" | 9 #include "src/v8.h" |
10 | 10 |
(...skipping 2111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2122 receiver_is_symbol.If<HCompareNumericAndBranch>( | 2122 receiver_is_symbol.If<HCompareNumericAndBranch>( |
2123 receiver_instance_type, Add<HConstant>(SYMBOL_TYPE), Token::EQ); | 2123 receiver_instance_type, Add<HConstant>(SYMBOL_TYPE), Token::EQ); |
2124 receiver_is_symbol.Then(); | 2124 receiver_is_symbol.Then(); |
2125 { | 2125 { |
2126 // Load global Symbol function. | 2126 // Load global Symbol function. |
2127 HValue* constructor = Add<HLoadNamedField>( | 2127 HValue* constructor = Add<HLoadNamedField>( |
2128 native_context, nullptr, HObjectAccess::ForContextSlot( | 2128 native_context, nullptr, HObjectAccess::ForContextSlot( |
2129 Context::SYMBOL_FUNCTION_INDEX)); | 2129 Context::SYMBOL_FUNCTION_INDEX)); |
2130 Push(constructor); | 2130 Push(constructor); |
2131 } | 2131 } |
2132 receiver_is_symbol.Else(); | 2132 // TODO(bmeurer): Don't inline this into crankshaft code, as it will |
2133 { | 2133 // deoptimize on all SIMD128 objects. |
2134 IfBuilder receiver_is_float32x4(this); | 2134 receiver_is_symbol.ElseDeopt( |
2135 receiver_is_float32x4.If<HCompareNumericAndBranch>( | 2135 Deoptimizer::kUndefinedOrNullInToObject); |
2136 receiver_instance_type, Add<HConstant>(FLOAT32X4_TYPE), | |
2137 Token::EQ); | |
2138 receiver_is_float32x4.Then(); | |
2139 { | |
2140 // Load global Float32x4 function. | |
2141 HValue* constructor = Add<HLoadNamedField>( | |
2142 native_context, nullptr, | |
2143 HObjectAccess::ForContextSlot( | |
2144 Context::FLOAT32X4_FUNCTION_INDEX)); | |
2145 Push(constructor); | |
2146 } | |
2147 receiver_is_float32x4.ElseDeopt( | |
2148 Deoptimizer::kUndefinedOrNullInToObject); | |
2149 receiver_is_float32x4.JoinContinuation(&wrap); | |
2150 } | |
2151 receiver_is_symbol.JoinContinuation(&wrap); | 2136 receiver_is_symbol.JoinContinuation(&wrap); |
2152 } | 2137 } |
2153 receiver_is_string.JoinContinuation(&wrap); | 2138 receiver_is_string.JoinContinuation(&wrap); |
2154 } | 2139 } |
2155 receiver_is_boolean.JoinContinuation(&wrap); | 2140 receiver_is_boolean.JoinContinuation(&wrap); |
2156 } | 2141 } |
2157 receiver_is_heap_number.JoinContinuation(&wrap); | 2142 receiver_is_heap_number.JoinContinuation(&wrap); |
2158 } | 2143 } |
2159 receiver_is_not_spec_object.JoinContinuation(&wrap); | 2144 receiver_is_not_spec_object.JoinContinuation(&wrap); |
2160 } | 2145 } |
(...skipping 11346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13507 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 13492 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
13508 } | 13493 } |
13509 | 13494 |
13510 #ifdef DEBUG | 13495 #ifdef DEBUG |
13511 graph_->Verify(false); // No full verify. | 13496 graph_->Verify(false); // No full verify. |
13512 #endif | 13497 #endif |
13513 } | 13498 } |
13514 | 13499 |
13515 } // namespace internal | 13500 } // namespace internal |
13516 } // namespace v8 | 13501 } // namespace v8 |
OLD | NEW |