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/code-factory.h" | 5 #include "src/code-factory.h" |
6 #include "src/compiler/code-assembler.h" | 6 #include "src/compiler/code-assembler.h" |
7 #include "src/isolate.h" | 7 #include "src/isolate.h" |
8 #include "src/objects-inl.h" | 8 #include "src/objects-inl.h" |
9 #include "test/cctest/compiler/code-assembler-tester.h" | 9 #include "test/cctest/compiler/code-assembler-tester.h" |
10 #include "test/cctest/compiler/function-tester.h" | 10 #include "test/cctest/compiler/function-tester.h" |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 const int kNumParams = 1; | 454 const int kNumParams = 1; |
455 CodeAssemblerTester data(isolate, kNumParams); | 455 CodeAssemblerTester data(isolate, kNumParams); |
456 CodeAssembler m(data.state()); | 456 CodeAssembler m(data.state()); |
457 | 457 |
458 Node* context = m.HeapConstant(Handle<Context>(isolate->native_context())); | 458 Node* context = m.HeapConstant(Handle<Context>(isolate->native_context())); |
459 Node* to_string_tag = | 459 Node* to_string_tag = |
460 m.HeapConstant(isolate->factory()->to_string_tag_symbol()); | 460 m.HeapConstant(isolate->factory()->to_string_tag_symbol()); |
461 Variable exception(&m, MachineRepresentation::kTagged); | 461 Variable exception(&m, MachineRepresentation::kTagged); |
462 | 462 |
463 Label exception_handler(&m); | 463 Label exception_handler(&m); |
464 Callable to_string = CodeFactory::ToString(isolate); | 464 Callable to_string = Builtins::CallableFor(isolate, Builtins::kToString); |
465 Node* string = m.CallStub(to_string, context, to_string_tag); | 465 Node* string = m.CallStub(to_string, context, to_string_tag); |
466 m.GotoIfException(string, &exception_handler, &exception); | 466 m.GotoIfException(string, &exception_handler, &exception); |
467 m.Return(string); | 467 m.Return(string); |
468 | 468 |
469 m.Bind(&exception_handler); | 469 m.Bind(&exception_handler); |
470 m.Return(exception.value()); | 470 m.Return(exception.value()); |
471 | 471 |
472 Handle<Code> code = data.GenerateCode(); | 472 Handle<Code> code = data.GenerateCode(); |
473 CHECK(!code.is_null()); | 473 CHECK(!code.is_null()); |
474 | 474 |
(...skipping 26 matching lines...) Expand all Loading... |
501 | 501 |
502 Label exception_handler1(&m); | 502 Label exception_handler1(&m); |
503 Label exception_handler2(&m); | 503 Label exception_handler2(&m); |
504 Label exception_handler3(&m); | 504 Label exception_handler3(&m); |
505 Variable return_value(&m, MachineRepresentation::kWord32); | 505 Variable return_value(&m, MachineRepresentation::kWord32); |
506 Variable error(&m, MachineRepresentation::kTagged); | 506 Variable error(&m, MachineRepresentation::kTagged); |
507 | 507 |
508 return_value.Bind(m.Int32Constant(0)); | 508 return_value.Bind(m.Int32Constant(0)); |
509 | 509 |
510 // try { return ToString(param1) } catch (e) { ... } | 510 // try { return ToString(param1) } catch (e) { ... } |
511 Callable to_string = CodeFactory::ToString(isolate); | 511 Callable to_string = Builtins::CallableFor(isolate, Builtins::kToString); |
512 Node* string = m.CallStub(to_string, context, first_value); | 512 Node* string = m.CallStub(to_string, context, first_value); |
513 m.GotoIfException(string, &exception_handler1, &error); | 513 m.GotoIfException(string, &exception_handler1, &error); |
514 m.Return(string); | 514 m.Return(string); |
515 | 515 |
516 // try { ToString(param2); return 7 } catch (e) { ... } | 516 // try { ToString(param2); return 7 } catch (e) { ... } |
517 m.Bind(&exception_handler1); | 517 m.Bind(&exception_handler1); |
518 return_value.Bind(m.Int32Constant(7)); | 518 return_value.Bind(m.Int32Constant(7)); |
519 error.Bind(UndefinedConstant(m)); | 519 error.Bind(UndefinedConstant(m)); |
520 string = m.CallStub(to_string, context, second_value); | 520 string = m.CallStub(to_string, context, second_value); |
521 m.GotoIfException(string, &exception_handler2, &error); | 521 m.GotoIfException(string, &exception_handler2, &error); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
571 Handle<Object> constructor = | 571 Handle<Object> constructor = |
572 Object::GetPropertyOrElement(result, | 572 Object::GetPropertyOrElement(result, |
573 isolate->factory()->constructor_string()) | 573 isolate->factory()->constructor_string()) |
574 .ToHandleChecked(); | 574 .ToHandleChecked(); |
575 CHECK(constructor->SameValue(*isolate->type_error_function())); | 575 CHECK(constructor->SameValue(*isolate->type_error_function())); |
576 } | 576 } |
577 | 577 |
578 } // namespace compiler | 578 } // namespace compiler |
579 } // namespace internal | 579 } // namespace internal |
580 } // namespace v8 | 580 } // namespace v8 |
OLD | NEW |