OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/interpreter/interpreter-intrinsics.h" | 7 #include "src/interpreter/interpreter-intrinsics.h" |
8 #include "test/cctest/interpreter/interpreter-tester.h" | 8 #include "test/cctest/interpreter/interpreter-tester.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 factory->undefined_value(), | 205 factory->undefined_value(), |
206 handle(Smi::FromInt(50), isolate))); | 206 handle(Smi::FromInt(50), isolate))); |
207 CHECK_EQ( | 207 CHECK_EQ( |
208 Smi::FromInt(20), | 208 Smi::FromInt(20), |
209 *helper.Invoke( | 209 *helper.Invoke( |
210 helper.NewObject("(function(a, b, c) { return a + b + c; })"), | 210 helper.NewObject("(function(a, b, c) { return a + b + c; })"), |
211 factory->undefined_value(), handle(Smi::FromInt(10), isolate), | 211 factory->undefined_value(), handle(Smi::FromInt(10), isolate), |
212 handle(Smi::FromInt(7), isolate), handle(Smi::FromInt(3), isolate))); | 212 handle(Smi::FromInt(7), isolate), handle(Smi::FromInt(3), isolate))); |
213 } | 213 } |
214 | 214 |
| 215 TEST(IntrinsicAsStubCall) { |
| 216 HandleAndZoneScope handles; |
| 217 Isolate* isolate = handles.main_isolate(); |
| 218 Factory* factory = isolate->factory(); |
| 219 InvokeIntrinsicHelper to_number_helper(isolate, handles.main_zone(), |
| 220 Runtime::kInlineToNumber); |
| 221 CHECK_EQ(Smi::FromInt(46), |
| 222 *to_number_helper.Invoke(to_number_helper.NewObject("'46'"))); |
| 223 |
| 224 InvokeIntrinsicHelper to_integer_helper(isolate, handles.main_zone(), |
| 225 Runtime::kInlineToInteger); |
| 226 CHECK_EQ(Smi::FromInt(502), |
| 227 *to_integer_helper.Invoke(to_integer_helper.NewObject("502.67"))); |
| 228 |
| 229 InvokeIntrinsicHelper math_pow_helper(isolate, handles.main_zone(), |
| 230 Runtime::kInlineMathPow); |
| 231 CHECK(math_pow_helper |
| 232 .Invoke(math_pow_helper.NewObject("3"), |
| 233 math_pow_helper.NewObject("7")) |
| 234 ->SameValue(Smi::FromInt(2187))); |
| 235 |
| 236 InvokeIntrinsicHelper has_property_helper(isolate, handles.main_zone(), |
| 237 Runtime::kInlineHasProperty); |
| 238 CHECK_EQ(*factory->true_value(), |
| 239 *has_property_helper.Invoke( |
| 240 has_property_helper.NewObject("'x'"), |
| 241 has_property_helper.NewObject("({ x: 20 })"))); |
| 242 CHECK_EQ(*factory->false_value(), |
| 243 *has_property_helper.Invoke( |
| 244 has_property_helper.NewObject("'y'"), |
| 245 has_property_helper.NewObject("({ x: 20 })"))); |
| 246 |
| 247 InvokeIntrinsicHelper sub_string_helper(isolate, handles.main_zone(), |
| 248 Runtime::kInlineSubString); |
| 249 CHECK(sub_string_helper |
| 250 .Invoke(sub_string_helper.NewObject("'foobar'"), |
| 251 sub_string_helper.NewObject("3"), |
| 252 sub_string_helper.NewObject("6")) |
| 253 ->SameValue(*sub_string_helper.NewObject("'bar'"))); |
| 254 } |
| 255 |
215 } // namespace interpreter | 256 } // namespace interpreter |
216 } // namespace internal | 257 } // namespace internal |
217 } // namespace v8 | 258 } // namespace v8 |
OLD | NEW |