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 3323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3334 GotoIf(Float64GreaterThan(value, smi_max), &out); | 3334 GotoIf(Float64GreaterThan(value, smi_max), &out); |
3335 GotoIfNot(Float64Equal(value, value), &out); // NaN. | 3335 GotoIfNot(Float64Equal(value, value), &out); // NaN. |
3336 | 3336 |
3337 var_result.Bind(Int32Constant(0)); | 3337 var_result.Bind(Int32Constant(0)); |
3338 Goto(&out); | 3338 Goto(&out); |
3339 | 3339 |
3340 BIND(&out); | 3340 BIND(&out); |
3341 return var_result.value(); | 3341 return var_result.value(); |
3342 } | 3342 } |
3343 | 3343 |
| 3344 Node* CodeStubAssembler::IsNumberPositive(Node* number) { |
| 3345 CSA_ASSERT(this, IsNumber(number)); |
| 3346 Node* const float_zero = Float64Constant(0.); |
| 3347 return Select(TaggedIsSmi(number), |
| 3348 [=] { return TaggedIsPositiveSmi(number); }, |
| 3349 [=] { |
| 3350 Node* v = LoadHeapNumberValue(number); |
| 3351 return Float64GreaterThanOrEqual(v, float_zero); |
| 3352 }, |
| 3353 MachineRepresentation::kWord32); |
| 3354 } |
| 3355 |
3344 Node* CodeStubAssembler::StringCharCodeAt(Node* string, Node* index, | 3356 Node* CodeStubAssembler::StringCharCodeAt(Node* string, Node* index, |
3345 ParameterMode parameter_mode) { | 3357 ParameterMode parameter_mode) { |
3346 if (parameter_mode == SMI_PARAMETERS) CSA_ASSERT(this, TaggedIsSmi(index)); | 3358 if (parameter_mode == SMI_PARAMETERS) CSA_ASSERT(this, TaggedIsSmi(index)); |
3347 CSA_ASSERT(this, IsString(string)); | 3359 CSA_ASSERT(this, IsString(string)); |
3348 | 3360 |
3349 // Translate the {index} into a Word. | 3361 // Translate the {index} into a Word. |
3350 Node* const int_index = ParameterToWord(index, parameter_mode); | 3362 Node* const int_index = ParameterToWord(index, parameter_mode); |
3351 CSA_ASSERT(this, IntPtrGreaterThanOrEqual(int_index, IntPtrConstant(0))); | 3363 CSA_ASSERT(this, IntPtrGreaterThanOrEqual(int_index, IntPtrConstant(0))); |
3352 | 3364 |
3353 VARIABLE(var_result, MachineRepresentation::kWord32); | 3365 VARIABLE(var_result, MachineRepresentation::kWord32); |
(...skipping 5532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8886 formatted.c_str(), TENURED); | 8898 formatted.c_str(), TENURED); |
8887 CallRuntime(Runtime::kGlobalPrint, NoContextConstant(), | 8899 CallRuntime(Runtime::kGlobalPrint, NoContextConstant(), |
8888 HeapConstant(string)); | 8900 HeapConstant(string)); |
8889 } | 8901 } |
8890 CallRuntime(Runtime::kDebugPrint, NoContextConstant(), tagged_value); | 8902 CallRuntime(Runtime::kDebugPrint, NoContextConstant(), tagged_value); |
8891 #endif | 8903 #endif |
8892 } | 8904 } |
8893 | 8905 |
8894 } // namespace internal | 8906 } // namespace internal |
8895 } // namespace v8 | 8907 } // namespace v8 |
OLD | NEW |