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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_ARM64 | 7 #if V8_TARGET_ARCH_ARM64 |
8 | 8 |
9 #include "src/code-factory.h" | 9 #include "src/code-factory.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 1067 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1078 __ Cmp(x0, null_value); | 1078 __ Cmp(x0, null_value); |
1079 __ B(eq, &exit); | 1079 __ B(eq, &exit); |
1080 | 1080 |
1081 PrepareForBailoutForId(stmt->PrepareId(), TOS_REG); | 1081 PrepareForBailoutForId(stmt->PrepareId(), TOS_REG); |
1082 | 1082 |
1083 // Convert the object to a JS object. | 1083 // Convert the object to a JS object. |
1084 Label convert, done_convert; | 1084 Label convert, done_convert; |
1085 __ JumpIfSmi(x0, &convert); | 1085 __ JumpIfSmi(x0, &convert); |
1086 __ JumpIfObjectType(x0, x10, x11, FIRST_SPEC_OBJECT_TYPE, &done_convert, ge); | 1086 __ JumpIfObjectType(x0, x10, x11, FIRST_SPEC_OBJECT_TYPE, &done_convert, ge); |
1087 __ Bind(&convert); | 1087 __ Bind(&convert); |
1088 __ Push(x0); | 1088 ToObjectStub stub(isolate()); |
1089 __ InvokeBuiltin(Builtins::TO_OBJECT, CALL_FUNCTION); | 1089 __ CallStub(&stub); |
1090 __ Bind(&done_convert); | 1090 __ Bind(&done_convert); |
1091 PrepareForBailoutForId(stmt->ToObjectId(), TOS_REG); | 1091 PrepareForBailoutForId(stmt->ToObjectId(), TOS_REG); |
1092 __ Push(x0); | 1092 __ Push(x0); |
1093 | 1093 |
1094 // Check for proxies. | 1094 // Check for proxies. |
1095 Label call_runtime; | 1095 Label call_runtime; |
1096 STATIC_ASSERT(FIRST_JS_PROXY_TYPE == FIRST_SPEC_OBJECT_TYPE); | 1096 STATIC_ASSERT(FIRST_JS_PROXY_TYPE == FIRST_SPEC_OBJECT_TYPE); |
1097 __ JumpIfObjectType(x0, x10, x11, LAST_JS_PROXY_TYPE, &call_runtime, le); | 1097 __ JumpIfObjectType(x0, x10, x11, LAST_JS_PROXY_TYPE, &call_runtime, le); |
1098 | 1098 |
1099 // Check cache validity in generated code. This is a fast case for | 1099 // Check cache validity in generated code. This is a fast case for |
(...skipping 2619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3719 | 3719 |
3720 // Load the argument into x0 and call the stub. | 3720 // Load the argument into x0 and call the stub. |
3721 VisitForAccumulatorValue(args->at(0)); | 3721 VisitForAccumulatorValue(args->at(0)); |
3722 | 3722 |
3723 NumberToStringStub stub(isolate()); | 3723 NumberToStringStub stub(isolate()); |
3724 __ CallStub(&stub); | 3724 __ CallStub(&stub); |
3725 context()->Plug(x0); | 3725 context()->Plug(x0); |
3726 } | 3726 } |
3727 | 3727 |
3728 | 3728 |
| 3729 void FullCodeGenerator::EmitToObject(CallRuntime* expr) { |
| 3730 ZoneList<Expression*>* args = expr->arguments(); |
| 3731 DCHECK_EQ(1, args->length()); |
| 3732 |
| 3733 // Load the argument into x0 and convert it. |
| 3734 VisitForAccumulatorValue(args->at(0)); |
| 3735 |
| 3736 ToObjectStub stub(isolate()); |
| 3737 __ CallStub(&stub); |
| 3738 context()->Plug(x0); |
| 3739 } |
| 3740 |
| 3741 |
3729 void FullCodeGenerator::EmitStringCharFromCode(CallRuntime* expr) { | 3742 void FullCodeGenerator::EmitStringCharFromCode(CallRuntime* expr) { |
3730 ZoneList<Expression*>* args = expr->arguments(); | 3743 ZoneList<Expression*>* args = expr->arguments(); |
3731 DCHECK(args->length() == 1); | 3744 DCHECK(args->length() == 1); |
3732 | 3745 |
3733 VisitForAccumulatorValue(args->at(0)); | 3746 VisitForAccumulatorValue(args->at(0)); |
3734 | 3747 |
3735 Label done; | 3748 Label done; |
3736 Register code = x0; | 3749 Register code = x0; |
3737 Register result = x1; | 3750 Register result = x1; |
3738 | 3751 |
(...skipping 1702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5441 } | 5454 } |
5442 | 5455 |
5443 return INTERRUPT; | 5456 return INTERRUPT; |
5444 } | 5457 } |
5445 | 5458 |
5446 | 5459 |
5447 } // namespace internal | 5460 } // namespace internal |
5448 } // namespace v8 | 5461 } // namespace v8 |
5449 | 5462 |
5450 #endif // V8_TARGET_ARCH_ARM64 | 5463 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |