| OLD | NEW | 
|---|
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/interpreter/interpreter-intrinsics.h" | 5 #include "src/interpreter/interpreter-intrinsics.h" | 
| 6 | 6 | 
| 7 #include "src/code-factory.h" | 7 #include "src/code-factory.h" | 
| 8 | 8 | 
| 9 namespace v8 { | 9 namespace v8 { | 
| 10 namespace internal { | 10 namespace internal { | 
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 297     __ Abort(kWrongArgumentCountForInvokeIntrinsic); | 297     __ Abort(kWrongArgumentCountForInvokeIntrinsic); | 
| 298     __ Goto(&arg_count_positive); | 298     __ Goto(&arg_count_positive); | 
| 299     __ Bind(&arg_count_positive); | 299     __ Bind(&arg_count_positive); | 
| 300   } | 300   } | 
| 301 | 301 | 
| 302   Node* result = __ CallJS(function, context, receiver_arg, target_args_count, | 302   Node* result = __ CallJS(function, context, receiver_arg, target_args_count, | 
| 303                            TailCallMode::kDisallow); | 303                            TailCallMode::kDisallow); | 
| 304   return result; | 304   return result; | 
| 305 } | 305 } | 
| 306 | 306 | 
| 307 Node* IntrinsicsHelper::ValueOf(Node* args_reg, Node* arg_count, |  | 
| 308                                 Node* context) { |  | 
| 309   InterpreterAssembler::Variable return_value(assembler_, |  | 
| 310                                               MachineRepresentation::kTagged); |  | 
| 311   InterpreterAssembler::Label done(assembler_); |  | 
| 312 |  | 
| 313   Node* object = __ LoadRegister(args_reg); |  | 
| 314   return_value.Bind(object); |  | 
| 315 |  | 
| 316   // If the object is a smi return the object. |  | 
| 317   __ GotoIf(__ TaggedIsSmi(object), &done); |  | 
| 318 |  | 
| 319   // If the object is not a value type, return the object. |  | 
| 320   Node* condition = |  | 
| 321       CompareInstanceType(object, JS_VALUE_TYPE, kInstanceTypeEqual); |  | 
| 322   __ GotoUnless(condition, &done); |  | 
| 323 |  | 
| 324   // If the object is a value type, return the value field. |  | 
| 325   return_value.Bind(__ LoadObjectField(object, JSValue::kValueOffset)); |  | 
| 326   __ Goto(&done); |  | 
| 327 |  | 
| 328   __ Bind(&done); |  | 
| 329   return return_value.value(); |  | 
| 330 } |  | 
| 331 |  | 
| 332 Node* IntrinsicsHelper::ClassOf(Node* args_reg, Node* arg_count, | 307 Node* IntrinsicsHelper::ClassOf(Node* args_reg, Node* arg_count, | 
| 333                                 Node* context) { | 308                                 Node* context) { | 
| 334   Node* value = __ LoadRegister(args_reg); | 309   Node* value = __ LoadRegister(args_reg); | 
| 335   return __ ClassOf(value); | 310   return __ ClassOf(value); | 
| 336 } | 311 } | 
| 337 | 312 | 
| 338 void IntrinsicsHelper::AbortIfArgCountMismatch(int expected, Node* actual) { | 313 void IntrinsicsHelper::AbortIfArgCountMismatch(int expected, Node* actual) { | 
| 339   InterpreterAssembler::Label match(assembler_); | 314   InterpreterAssembler::Label match(assembler_); | 
| 340   Node* comparison = __ Word32Equal(actual, __ Int32Constant(expected)); | 315   Node* comparison = __ Word32Equal(actual, __ Int32Constant(expected)); | 
| 341   __ GotoIf(comparison, &match); | 316   __ GotoIf(comparison, &match); | 
| 342   __ Abort(kWrongArgumentCountForInvokeIntrinsic); | 317   __ Abort(kWrongArgumentCountForInvokeIntrinsic); | 
| 343   __ Goto(&match); | 318   __ Goto(&match); | 
| 344   __ Bind(&match); | 319   __ Bind(&match); | 
| 345 } | 320 } | 
| 346 | 321 | 
| 347 }  // namespace interpreter | 322 }  // namespace interpreter | 
| 348 }  // namespace internal | 323 }  // namespace internal | 
| 349 }  // namespace v8 | 324 }  // namespace v8 | 
| OLD | NEW | 
|---|