Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Side by Side Diff: src/interpreter/interpreter-intrinsics.cc

Issue 2642303003: [ignition] Remove obsolete %_ValueOf intrinsic. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
OLDNEW
« no previous file with comments | « src/interpreter/interpreter-intrinsics.h ('k') | test/cctest/interpreter/test-interpreter-intrinsics.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698