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 #include "src/arm64/frames-arm64.h" | 7 #include "src/arm64/frames-arm64.h" |
8 #include "src/arm64/lithium-codegen-arm64.h" | 8 #include "src/arm64/lithium-codegen-arm64.h" |
9 #include "src/arm64/lithium-gap-resolver-arm64.h" | 9 #include "src/arm64/lithium-gap-resolver-arm64.h" |
10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
(...skipping 5921 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5932 __ B(chunk_->GetAssemblyLabel(false_block)); | 5932 __ B(chunk_->GetAssemblyLabel(false_block)); |
5933 } | 5933 } |
5934 } | 5934 } |
5935 | 5935 |
5936 } else if (String::Equals(type_name, factory->string_string())) { | 5936 } else if (String::Equals(type_name, factory->string_string())) { |
5937 DCHECK((instr->temp1() != NULL) && (instr->temp2() != NULL)); | 5937 DCHECK((instr->temp1() != NULL) && (instr->temp2() != NULL)); |
5938 Register map = ToRegister(instr->temp1()); | 5938 Register map = ToRegister(instr->temp1()); |
5939 Register scratch = ToRegister(instr->temp2()); | 5939 Register scratch = ToRegister(instr->temp2()); |
5940 | 5940 |
5941 __ JumpIfSmi(value, false_label); | 5941 __ JumpIfSmi(value, false_label); |
5942 __ JumpIfObjectType( | 5942 __ CompareObjectType(value, map, scratch, FIRST_NONSTRING_TYPE); |
5943 value, map, scratch, FIRST_NONSTRING_TYPE, false_label, ge); | 5943 EmitBranch(instr, lt); |
5944 __ Ldrb(scratch, FieldMemOperand(map, Map::kBitFieldOffset)); | |
5945 EmitTestAndBranch(instr, eq, scratch, 1 << Map::kIsUndetectable); | |
5946 | 5944 |
5947 } else if (String::Equals(type_name, factory->symbol_string())) { | 5945 } else if (String::Equals(type_name, factory->symbol_string())) { |
5948 DCHECK((instr->temp1() != NULL) && (instr->temp2() != NULL)); | 5946 DCHECK((instr->temp1() != NULL) && (instr->temp2() != NULL)); |
5949 Register map = ToRegister(instr->temp1()); | 5947 Register map = ToRegister(instr->temp1()); |
5950 Register scratch = ToRegister(instr->temp2()); | 5948 Register scratch = ToRegister(instr->temp2()); |
5951 | 5949 |
5952 __ JumpIfSmi(value, false_label); | 5950 __ JumpIfSmi(value, false_label); |
5953 __ CompareObjectType(value, map, scratch, SYMBOL_TYPE); | 5951 __ CompareObjectType(value, map, scratch, SYMBOL_TYPE); |
5954 EmitBranch(instr, eq); | 5952 EmitBranch(instr, eq); |
5955 | 5953 |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6162 Handle<ScopeInfo> scope_info = instr->scope_info(); | 6160 Handle<ScopeInfo> scope_info = instr->scope_info(); |
6163 __ Push(scope_info); | 6161 __ Push(scope_info); |
6164 __ Push(ToRegister(instr->function())); | 6162 __ Push(ToRegister(instr->function())); |
6165 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 6163 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
6166 RecordSafepoint(Safepoint::kNoLazyDeopt); | 6164 RecordSafepoint(Safepoint::kNoLazyDeopt); |
6167 } | 6165 } |
6168 | 6166 |
6169 | 6167 |
6170 } // namespace internal | 6168 } // namespace internal |
6171 } // namespace v8 | 6169 } // namespace v8 |
OLD | NEW |