OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/runtime/runtime-utils.h" | 5 #include "src/runtime/runtime-utils.h" |
6 | 6 |
7 #include "src/arguments.h" | 7 #include "src/arguments.h" |
8 #include "src/bootstrapper.h" | 8 #include "src/bootstrapper.h" |
9 #include "src/debug/debug.h" | 9 #include "src/debug/debug.h" |
10 #include "src/isolate-inl.h" | 10 #include "src/isolate-inl.h" |
(...skipping 1159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1170 return Smi::FromInt(GREATER); | 1170 return Smi::FromInt(GREATER); |
1171 case ComparisonResult::kUndefined: | 1171 case ComparisonResult::kUndefined: |
1172 return *ncr; | 1172 return *ncr; |
1173 } | 1173 } |
1174 UNREACHABLE(); | 1174 UNREACHABLE(); |
1175 } | 1175 } |
1176 return isolate->heap()->exception(); | 1176 return isolate->heap()->exception(); |
1177 } | 1177 } |
1178 | 1178 |
1179 | 1179 |
1180 // TODO(bmeurer): Kill this special wrapper and use TF compatible LessThan, | |
1181 // GreaterThan, etc. which return true or false. | |
1182 RUNTIME_FUNCTION(Runtime_Compare_Strong) { | |
1183 HandleScope scope(isolate); | |
1184 DCHECK_EQ(3, args.length()); | |
1185 CONVERT_ARG_HANDLE_CHECKED(Object, x, 0); | |
1186 CONVERT_ARG_HANDLE_CHECKED(Object, y, 1); | |
1187 CONVERT_ARG_HANDLE_CHECKED(Object, ncr, 2); | |
1188 Maybe<ComparisonResult> result = Object::Compare(x, y, Strength::STRONG); | |
1189 if (result.IsJust()) { | |
1190 switch (result.FromJust()) { | |
1191 case ComparisonResult::kLessThan: | |
1192 return Smi::FromInt(LESS); | |
1193 case ComparisonResult::kEqual: | |
1194 return Smi::FromInt(EQUAL); | |
1195 case ComparisonResult::kGreaterThan: | |
1196 return Smi::FromInt(GREATER); | |
1197 case ComparisonResult::kUndefined: | |
1198 return *ncr; | |
1199 } | |
1200 UNREACHABLE(); | |
1201 } | |
1202 return isolate->heap()->exception(); | |
1203 } | |
1204 | |
1205 | |
1206 RUNTIME_FUNCTION(Runtime_InstanceOf) { | 1180 RUNTIME_FUNCTION(Runtime_InstanceOf) { |
1207 // ECMA-262, section 11.8.6, page 54. | 1181 // ECMA-262, section 11.8.6, page 54. |
1208 HandleScope shs(isolate); | 1182 HandleScope shs(isolate); |
1209 DCHECK_EQ(2, args.length()); | 1183 DCHECK_EQ(2, args.length()); |
1210 DCHECK(args.length() == 2); | 1184 DCHECK(args.length() == 2); |
1211 CONVERT_ARG_HANDLE_CHECKED(Object, object, 0); | 1185 CONVERT_ARG_HANDLE_CHECKED(Object, object, 0); |
1212 CONVERT_ARG_HANDLE_CHECKED(Object, callable, 1); | 1186 CONVERT_ARG_HANDLE_CHECKED(Object, callable, 1); |
1213 // {callable} must have a [[Call]] internal method. | 1187 // {callable} must have a [[Call]] internal method. |
1214 if (!callable->IsCallable()) { | 1188 if (!callable->IsCallable()) { |
1215 THROW_NEW_ERROR_RETURN_FAILURE( | 1189 THROW_NEW_ERROR_RETURN_FAILURE( |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1296 DCHECK(args.length() == 2); | 1270 DCHECK(args.length() == 2); |
1297 CONVERT_ARG_HANDLE_CHECKED(Object, o, 0); | 1271 CONVERT_ARG_HANDLE_CHECKED(Object, o, 0); |
1298 CONVERT_ARG_HANDLE_CHECKED(Object, properties, 1); | 1272 CONVERT_ARG_HANDLE_CHECKED(Object, properties, 1); |
1299 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( | 1273 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
1300 isolate, o, JSReceiver::DefineProperties(isolate, o, properties)); | 1274 isolate, o, JSReceiver::DefineProperties(isolate, o, properties)); |
1301 return *o; | 1275 return *o; |
1302 } | 1276 } |
1303 | 1277 |
1304 } // namespace internal | 1278 } // namespace internal |
1305 } // namespace v8 | 1279 } // namespace v8 |
OLD | NEW |