| OLD | NEW | 
|     1 // Copyright 2016 the V8 project authors. All rights reserved. |     1 // Copyright 2016 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 #include "src/code-stub-assembler.h" |     4 #include "src/code-stub-assembler.h" | 
|     5 #include "src/code-factory.h" |     5 #include "src/code-factory.h" | 
|     6 #include "src/frames-inl.h" |     6 #include "src/frames-inl.h" | 
|     7 #include "src/frames.h" |     7 #include "src/frames.h" | 
|     8  |     8  | 
|     9 namespace v8 { |     9 namespace v8 { | 
|    10 namespace internal { |    10 namespace internal { | 
| (...skipping 3345 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3356  |  3356  | 
|  3357 Node* ToDirectStringAssembler::TryToDirect(Label* if_bailout) { |  3357 Node* ToDirectStringAssembler::TryToDirect(Label* if_bailout) { | 
|  3358   VariableList vars({&var_string_, &var_offset_, &var_instance_type_}, zone()); |  3358   VariableList vars({&var_string_, &var_offset_, &var_instance_type_}, zone()); | 
|  3359   Label dispatch(this, vars); |  3359   Label dispatch(this, vars); | 
|  3360   Label if_iscons(this); |  3360   Label if_iscons(this); | 
|  3361   Label if_isexternal(this); |  3361   Label if_isexternal(this); | 
|  3362   Label if_issliced(this); |  3362   Label if_issliced(this); | 
|  3363   Label if_isthin(this); |  3363   Label if_isthin(this); | 
|  3364   Label out(this); |  3364   Label out(this); | 
|  3365  |  3365  | 
|  3366   Goto(&dispatch); |  3366   Branch(IsSequentialStringInstanceType(var_instance_type_.value()), &out, | 
 |  3367          &dispatch); | 
|  3367  |  3368  | 
|  3368   // Dispatch based on string representation. |  3369   // Dispatch based on string representation. | 
|  3369   Bind(&dispatch); |  3370   Bind(&dispatch); | 
|  3370   { |  3371   { | 
|  3371     int32_t values[] = { |  3372     int32_t values[] = { | 
|  3372         kSeqStringTag,    kConsStringTag, kExternalStringTag, |  3373         kSeqStringTag,    kConsStringTag, kExternalStringTag, | 
|  3373         kSlicedStringTag, kThinStringTag, |  3374         kSlicedStringTag, kThinStringTag, | 
|  3374     }; |  3375     }; | 
|  3375     Label* labels[] = { |  3376     Label* labels[] = { | 
|  3376         &out, &if_iscons, &if_isexternal, &if_issliced, &if_isthin, |  3377         &out, &if_iscons, &if_isexternal, &if_issliced, &if_isthin, | 
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3433  |  3434  | 
|  3434   Bind(&out); |  3435   Bind(&out); | 
|  3435   return var_string_.value(); |  3436   return var_string_.value(); | 
|  3436 } |  3437 } | 
|  3437  |  3438  | 
|  3438 Node* ToDirectStringAssembler::TryToSequential(StringPointerKind ptr_kind, |  3439 Node* ToDirectStringAssembler::TryToSequential(StringPointerKind ptr_kind, | 
|  3439                                                Label* if_bailout) { |  3440                                                Label* if_bailout) { | 
|  3440   CHECK(ptr_kind == PTR_TO_DATA || ptr_kind == PTR_TO_STRING); |  3441   CHECK(ptr_kind == PTR_TO_DATA || ptr_kind == PTR_TO_STRING); | 
|  3441  |  3442  | 
|  3442   Variable var_result(this, MachineType::PointerRepresentation()); |  3443   Variable var_result(this, MachineType::PointerRepresentation()); | 
|  3443   Label out(this), if_issequential(this), if_isexternal(this); |  3444   Label out(this), if_issequential(this), if_isexternal(this, Label::kDeferred); | 
|  3444   Branch(is_external(), &if_isexternal, &if_issequential); |  3445   Branch(is_external(), &if_isexternal, &if_issequential); | 
|  3445  |  3446  | 
|  3446   Bind(&if_issequential); |  3447   Bind(&if_issequential); | 
|  3447   { |  3448   { | 
|  3448     STATIC_ASSERT(SeqOneByteString::kHeaderSize == |  3449     STATIC_ASSERT(SeqOneByteString::kHeaderSize == | 
|  3449                   SeqTwoByteString::kHeaderSize); |  3450                   SeqTwoByteString::kHeaderSize); | 
|  3450     Node* result = BitcastTaggedToWord(var_string_.value()); |  3451     Node* result = BitcastTaggedToWord(var_string_.value()); | 
|  3451     if (ptr_kind == PTR_TO_DATA) { |  3452     if (ptr_kind == PTR_TO_DATA) { | 
|  3452       result = IntPtrAdd(result, IntPtrConstant(SeqOneByteString::kHeaderSize - |  3453       result = IntPtrAdd(result, IntPtrConstant(SeqOneByteString::kHeaderSize - | 
|  3453                                                 kHeapObjectTag)); |  3454                                                 kHeapObjectTag)); | 
| (...skipping 4818 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  8272         formatted.c_str(), TENURED); |  8273         formatted.c_str(), TENURED); | 
|  8273     CallRuntime(Runtime::kGlobalPrint, NoContextConstant(), |  8274     CallRuntime(Runtime::kGlobalPrint, NoContextConstant(), | 
|  8274                 HeapConstant(string)); |  8275                 HeapConstant(string)); | 
|  8275   } |  8276   } | 
|  8276   CallRuntime(Runtime::kDebugPrint, NoContextConstant(), tagged_value); |  8277   CallRuntime(Runtime::kDebugPrint, NoContextConstant(), tagged_value); | 
|  8277 #endif |  8278 #endif | 
|  8278 } |  8279 } | 
|  8279  |  8280  | 
|  8280 }  // namespace internal |  8281 }  // namespace internal | 
|  8281 }  // namespace v8 |  8282 }  // namespace v8 | 
| OLD | NEW |