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

Side by Side Diff: src/compiler/raw-machine-assembler.h

Issue 1665853002: [Interpreter] Add explicit StackCheck bytecodes on function entry and back branches. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix unittests. Created 4 years, 10 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
« no previous file with comments | « src/compiler/pipeline.cc ('k') | src/compiler/raw-machine-assembler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef V8_COMPILER_RAW_MACHINE_ASSEMBLER_H_ 5 #ifndef V8_COMPILER_RAW_MACHINE_ASSEMBLER_H_
6 #define V8_COMPILER_RAW_MACHINE_ASSEMBLER_H_ 6 #define V8_COMPILER_RAW_MACHINE_ASSEMBLER_H_
7 7
8 #include "src/assembler.h" 8 #include "src/assembler.h"
9 #include "src/compiler/common-operator.h" 9 #include "src/compiler/common-operator.h"
10 #include "src/compiler/graph.h" 10 #include "src/compiler/graph.h"
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 Node* Uint32Mod(Node* a, Node* b) { 271 Node* Uint32Mod(Node* a, Node* b) {
272 return AddNode(machine()->Uint32Mod(), a, b); 272 return AddNode(machine()->Uint32Mod(), a, b);
273 } 273 }
274 Node* Uint32MulHigh(Node* a, Node* b) { 274 Node* Uint32MulHigh(Node* a, Node* b) {
275 return AddNode(machine()->Uint32MulHigh(), a, b); 275 return AddNode(machine()->Uint32MulHigh(), a, b);
276 } 276 }
277 Node* Int32GreaterThan(Node* a, Node* b) { return Int32LessThan(b, a); } 277 Node* Int32GreaterThan(Node* a, Node* b) { return Int32LessThan(b, a); }
278 Node* Int32GreaterThanOrEqual(Node* a, Node* b) { 278 Node* Int32GreaterThanOrEqual(Node* a, Node* b) {
279 return Int32LessThanOrEqual(b, a); 279 return Int32LessThanOrEqual(b, a);
280 } 280 }
281 Node* Uint32GreaterThan(Node* a, Node* b) { return Uint32LessThan(b, a); }
282 Node* Uint32GreaterThanOrEqual(Node* a, Node* b) {
283 return Uint32LessThanOrEqual(b, a);
284 }
281 Node* Int32Neg(Node* a) { return Int32Sub(Int32Constant(0), a); } 285 Node* Int32Neg(Node* a) { return Int32Sub(Int32Constant(0), a); }
282 286
283 Node* Int64Add(Node* a, Node* b) { 287 Node* Int64Add(Node* a, Node* b) {
284 return AddNode(machine()->Int64Add(), a, b); 288 return AddNode(machine()->Int64Add(), a, b);
285 } 289 }
286 Node* Int64AddWithOverflow(Node* a, Node* b) { 290 Node* Int64AddWithOverflow(Node* a, Node* b) {
287 return AddNode(machine()->Int64AddWithOverflow(), a, b); 291 return AddNode(machine()->Int64AddWithOverflow(), a, b);
288 } 292 }
289 Node* Int64Sub(Node* a, Node* b) { 293 Node* Int64Sub(Node* a, Node* b) {
290 return AddNode(machine()->Int64Sub(), a, b); 294 return AddNode(machine()->Int64Sub(), a, b);
(...skipping 20 matching lines...) Expand all
311 Node* Uint64LessThan(Node* a, Node* b) { 315 Node* Uint64LessThan(Node* a, Node* b) {
312 return AddNode(machine()->Uint64LessThan(), a, b); 316 return AddNode(machine()->Uint64LessThan(), a, b);
313 } 317 }
314 Node* Uint64LessThanOrEqual(Node* a, Node* b) { 318 Node* Uint64LessThanOrEqual(Node* a, Node* b) {
315 return AddNode(machine()->Uint64LessThanOrEqual(), a, b); 319 return AddNode(machine()->Uint64LessThanOrEqual(), a, b);
316 } 320 }
317 Node* Int64GreaterThan(Node* a, Node* b) { return Int64LessThan(b, a); } 321 Node* Int64GreaterThan(Node* a, Node* b) { return Int64LessThan(b, a); }
318 Node* Int64GreaterThanOrEqual(Node* a, Node* b) { 322 Node* Int64GreaterThanOrEqual(Node* a, Node* b) {
319 return Int64LessThanOrEqual(b, a); 323 return Int64LessThanOrEqual(b, a);
320 } 324 }
325 Node* Uint64GreaterThan(Node* a, Node* b) { return Uint64LessThan(b, a); }
326 Node* Uint64GreaterThanOrEqual(Node* a, Node* b) {
327 return Uint64LessThanOrEqual(b, a);
328 }
321 Node* Uint64Div(Node* a, Node* b) { 329 Node* Uint64Div(Node* a, Node* b) {
322 return AddNode(machine()->Uint64Div(), a, b); 330 return AddNode(machine()->Uint64Div(), a, b);
323 } 331 }
324 Node* Uint64Mod(Node* a, Node* b) { 332 Node* Uint64Mod(Node* a, Node* b) {
325 return AddNode(machine()->Uint64Mod(), a, b); 333 return AddNode(machine()->Uint64Mod(), a, b);
326 } 334 }
327 335
328 #define INTPTR_BINOP(prefix, name) \ 336 #define INTPTR_BINOP(prefix, name) \
329 Node* IntPtr##name(Node* a, Node* b) { \ 337 Node* IntPtr##name(Node* a, Node* b) { \
330 return kPointerSize == 8 ? prefix##64##name(a, b) \ 338 return kPointerSize == 8 ? prefix##64##name(a, b) \
331 : prefix##32##name(a, b); \ 339 : prefix##32##name(a, b); \
332 } 340 }
333 341
334 INTPTR_BINOP(Int, Add); 342 INTPTR_BINOP(Int, Add);
335 INTPTR_BINOP(Int, Sub); 343 INTPTR_BINOP(Int, Sub);
336 INTPTR_BINOP(Int, LessThan); 344 INTPTR_BINOP(Int, LessThan);
337 INTPTR_BINOP(Int, LessThanOrEqual); 345 INTPTR_BINOP(Int, LessThanOrEqual);
338 INTPTR_BINOP(Word, Equal); 346 INTPTR_BINOP(Word, Equal);
339 INTPTR_BINOP(Word, NotEqual); 347 INTPTR_BINOP(Word, NotEqual);
340 INTPTR_BINOP(Int, GreaterThanOrEqual); 348 INTPTR_BINOP(Int, GreaterThanOrEqual);
341 INTPTR_BINOP(Int, GreaterThan); 349 INTPTR_BINOP(Int, GreaterThan);
342 350
343 #undef INTPTR_BINOP 351 #undef INTPTR_BINOP
344 352
353 #define UINTPTR_BINOP(prefix, name) \
354 Node* UintPtr##name(Node* a, Node* b) { \
355 return kPointerSize == 8 ? prefix##64##name(a, b) \
356 : prefix##32##name(a, b); \
357 }
358
359 UINTPTR_BINOP(Uint, LessThan);
360 UINTPTR_BINOP(Uint, LessThanOrEqual);
361 UINTPTR_BINOP(Uint, GreaterThanOrEqual);
362 UINTPTR_BINOP(Uint, GreaterThan);
363
364 #undef UINTPTR_BINOP
365
345 Node* Float32Add(Node* a, Node* b) { 366 Node* Float32Add(Node* a, Node* b) {
346 return AddNode(machine()->Float32Add(), a, b); 367 return AddNode(machine()->Float32Add(), a, b);
347 } 368 }
348 Node* Float32Sub(Node* a, Node* b) { 369 Node* Float32Sub(Node* a, Node* b) {
349 return AddNode(machine()->Float32Sub(), a, b); 370 return AddNode(machine()->Float32Sub(), a, b);
350 } 371 }
351 Node* Float32Mul(Node* a, Node* b) { 372 Node* Float32Mul(Node* a, Node* b) {
352 return AddNode(machine()->Float32Mul(), a, b); 373 return AddNode(machine()->Float32Mul(), a, b);
353 } 374 }
354 Node* Float32Div(Node* a, Node* b) { 375 Node* Float32Div(Node* a, Node* b) {
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 } 581 }
561 Node* StringConstant(const char* string) { 582 Node* StringConstant(const char* string) {
562 return HeapConstant(isolate()->factory()->InternalizeUtf8String(string)); 583 return HeapConstant(isolate()->factory()->InternalizeUtf8String(string));
563 } 584 }
564 585
565 // Call a given call descriptor and the given arguments. 586 // Call a given call descriptor and the given arguments.
566 Node* CallN(CallDescriptor* desc, Node* function, Node** args); 587 Node* CallN(CallDescriptor* desc, Node* function, Node** args);
567 // Call a given call descriptor and the given arguments and frame-state. 588 // Call a given call descriptor and the given arguments and frame-state.
568 Node* CallNWithFrameState(CallDescriptor* desc, Node* function, Node** args, 589 Node* CallNWithFrameState(CallDescriptor* desc, Node* function, Node** args,
569 Node* frame_state); 590 Node* frame_state);
591 // Call to a runtime function with zero arguments.
592 Node* CallRuntime0(Runtime::FunctionId function, Node* context);
570 // Call to a runtime function with one arguments. 593 // Call to a runtime function with one arguments.
571 Node* CallRuntime1(Runtime::FunctionId function, Node* arg0, Node* context); 594 Node* CallRuntime1(Runtime::FunctionId function, Node* arg0, Node* context);
572 // Call to a runtime function with two arguments. 595 // Call to a runtime function with two arguments.
573 Node* CallRuntime2(Runtime::FunctionId function, Node* arg1, Node* arg2, 596 Node* CallRuntime2(Runtime::FunctionId function, Node* arg1, Node* arg2,
574 Node* context); 597 Node* context);
575 // Call to a runtime function with three arguments. 598 // Call to a runtime function with three arguments.
576 Node* CallRuntime3(Runtime::FunctionId function, Node* arg1, Node* arg2, 599 Node* CallRuntime3(Runtime::FunctionId function, Node* arg1, Node* arg2,
577 Node* arg3, Node* context); 600 Node* arg3, Node* context);
578 // Call to a runtime function with four arguments. 601 // Call to a runtime function with four arguments.
579 Node* CallRuntime4(Runtime::FunctionId function, Node* arg1, Node* arg2, 602 Node* CallRuntime4(Runtime::FunctionId function, Node* arg1, Node* arg2,
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 bool bound_; 716 bool bound_;
694 friend class RawMachineAssembler; 717 friend class RawMachineAssembler;
695 DISALLOW_COPY_AND_ASSIGN(RawMachineLabel); 718 DISALLOW_COPY_AND_ASSIGN(RawMachineLabel);
696 }; 719 };
697 720
698 } // namespace compiler 721 } // namespace compiler
699 } // namespace internal 722 } // namespace internal
700 } // namespace v8 723 } // namespace v8
701 724
702 #endif // V8_COMPILER_RAW_MACHINE_ASSEMBLER_H_ 725 #endif // V8_COMPILER_RAW_MACHINE_ASSEMBLER_H_
OLDNEW
« no previous file with comments | « src/compiler/pipeline.cc ('k') | src/compiler/raw-machine-assembler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698