| Index: src/runtime/runtime.h
|
| diff --git a/src/runtime/runtime.h b/src/runtime/runtime.h
|
| index cfd67ba891393dc2649e53694e79d3c738269d4a..402353929d82fcd12b7d31699f19404282b45e71 100644
|
| --- a/src/runtime/runtime.h
|
| +++ b/src/runtime/runtime.h
|
| @@ -6,6 +6,7 @@
|
| #define V8_RUNTIME_RUNTIME_H_
|
|
|
| #include "src/allocation.h"
|
| +#include "src/base/platform/time.h"
|
| #include "src/objects.h"
|
| #include "src/unicode.h"
|
| #include "src/zone.h"
|
| @@ -336,7 +337,8 @@ namespace internal {
|
| F(ThrowDerivedConstructorReturnedNonObject, 0, 1) \
|
| F(ThrowCalledNonCallable, 1, 1) \
|
| F(CreateListFromArrayLike, 1, 1) \
|
| - F(IncrementUseCounter, 1, 1)
|
| + F(IncrementUseCounter, 1, 1) \
|
| + F(GetAndResetRuntimeCallStats, 0, 1)
|
|
|
|
|
| #define FOR_EACH_INTRINSIC_JSON(F) \
|
| @@ -567,311 +569,317 @@ namespace internal {
|
| F(Arguments, 1, 1)
|
|
|
|
|
| -#define FOR_EACH_INTRINSIC_SIMD(F) \
|
| - F(IsSimdValue, 1, 1) \
|
| - F(SimdSameValue, 2, 1) \
|
| - F(SimdSameValueZero, 2, 1) \
|
| - F(CreateFloat32x4, 4, 1) \
|
| - F(CreateInt32x4, 4, 1) \
|
| - F(CreateUint32x4, 4, 1) \
|
| - F(CreateBool32x4, 4, 1) \
|
| - F(CreateInt16x8, 8, 1) \
|
| - F(CreateUint16x8, 8, 1) \
|
| - F(CreateBool16x8, 8, 1) \
|
| - F(CreateInt8x16, 16, 1) \
|
| - F(CreateUint8x16, 16, 1) \
|
| - F(CreateBool8x16, 16, 1) \
|
| - F(Float32x4Check, 1, 1) \
|
| - F(Float32x4ExtractLane, 2, 1) \
|
| - F(Float32x4ReplaceLane, 3, 1) \
|
| - F(Float32x4Abs, 1, 1) \
|
| - F(Float32x4Neg, 1, 1) \
|
| - F(Float32x4Sqrt, 1, 1) \
|
| - F(Float32x4RecipApprox, 1, 1) \
|
| - F(Float32x4RecipSqrtApprox, 1, 1) \
|
| - F(Float32x4Add, 2, 1) \
|
| - F(Float32x4Sub, 2, 1) \
|
| - F(Float32x4Mul, 2, 1) \
|
| - F(Float32x4Div, 2, 1) \
|
| - F(Float32x4Min, 2, 1) \
|
| - F(Float32x4Max, 2, 1) \
|
| - F(Float32x4MinNum, 2, 1) \
|
| - F(Float32x4MaxNum, 2, 1) \
|
| - F(Float32x4Equal, 2, 1) \
|
| - F(Float32x4NotEqual, 2, 1) \
|
| - F(Float32x4LessThan, 2, 1) \
|
| - F(Float32x4LessThanOrEqual, 2, 1) \
|
| - F(Float32x4GreaterThan, 2, 1) \
|
| - F(Float32x4GreaterThanOrEqual, 2, 1) \
|
| - F(Float32x4Select, 3, 1) \
|
| - F(Float32x4Swizzle, 5, 1) \
|
| - F(Float32x4Shuffle, 6, 1) \
|
| - F(Float32x4FromInt32x4, 1, 1) \
|
| - F(Float32x4FromUint32x4, 1, 1) \
|
| - F(Float32x4FromInt32x4Bits, 1, 1) \
|
| - F(Float32x4FromUint32x4Bits, 1, 1) \
|
| - F(Float32x4FromInt16x8Bits, 1, 1) \
|
| - F(Float32x4FromUint16x8Bits, 1, 1) \
|
| - F(Float32x4FromInt8x16Bits, 1, 1) \
|
| - F(Float32x4FromUint8x16Bits, 1, 1) \
|
| - F(Float32x4Load, 2, 1) \
|
| - F(Float32x4Load1, 2, 1) \
|
| - F(Float32x4Load2, 2, 1) \
|
| - F(Float32x4Load3, 2, 1) \
|
| - F(Float32x4Store, 3, 1) \
|
| - F(Float32x4Store1, 3, 1) \
|
| - F(Float32x4Store2, 3, 1) \
|
| - F(Float32x4Store3, 3, 1) \
|
| - F(Int32x4Check, 1, 1) \
|
| - F(Int32x4ExtractLane, 2, 1) \
|
| - F(Int32x4ReplaceLane, 3, 1) \
|
| - F(Int32x4Neg, 1, 1) \
|
| - F(Int32x4Add, 2, 1) \
|
| - F(Int32x4Sub, 2, 1) \
|
| - F(Int32x4Mul, 2, 1) \
|
| - F(Int32x4Min, 2, 1) \
|
| - F(Int32x4Max, 2, 1) \
|
| - F(Int32x4And, 2, 1) \
|
| - F(Int32x4Or, 2, 1) \
|
| - F(Int32x4Xor, 2, 1) \
|
| - F(Int32x4Not, 1, 1) \
|
| - F(Int32x4ShiftLeftByScalar, 2, 1) \
|
| - F(Int32x4ShiftRightByScalar, 2, 1) \
|
| - F(Int32x4Equal, 2, 1) \
|
| - F(Int32x4NotEqual, 2, 1) \
|
| - F(Int32x4LessThan, 2, 1) \
|
| - F(Int32x4LessThanOrEqual, 2, 1) \
|
| - F(Int32x4GreaterThan, 2, 1) \
|
| - F(Int32x4GreaterThanOrEqual, 2, 1) \
|
| - F(Int32x4Select, 3, 1) \
|
| - F(Int32x4Swizzle, 5, 1) \
|
| - F(Int32x4Shuffle, 6, 1) \
|
| - F(Int32x4FromFloat32x4, 1, 1) \
|
| - F(Int32x4FromUint32x4, 1, 1) \
|
| - F(Int32x4FromFloat32x4Bits, 1, 1) \
|
| - F(Int32x4FromUint32x4Bits, 1, 1) \
|
| - F(Int32x4FromInt16x8Bits, 1, 1) \
|
| - F(Int32x4FromUint16x8Bits, 1, 1) \
|
| - F(Int32x4FromInt8x16Bits, 1, 1) \
|
| - F(Int32x4FromUint8x16Bits, 1, 1) \
|
| - F(Int32x4Load, 2, 1) \
|
| - F(Int32x4Load1, 2, 1) \
|
| - F(Int32x4Load2, 2, 1) \
|
| - F(Int32x4Load3, 2, 1) \
|
| - F(Int32x4Store, 3, 1) \
|
| - F(Int32x4Store1, 3, 1) \
|
| - F(Int32x4Store2, 3, 1) \
|
| - F(Int32x4Store3, 3, 1) \
|
| - F(Uint32x4Check, 1, 1) \
|
| - F(Uint32x4ExtractLane, 2, 1) \
|
| - F(Uint32x4ReplaceLane, 3, 1) \
|
| - F(Uint32x4Add, 2, 1) \
|
| - F(Uint32x4Sub, 2, 1) \
|
| - F(Uint32x4Mul, 2, 1) \
|
| - F(Uint32x4Min, 2, 1) \
|
| - F(Uint32x4Max, 2, 1) \
|
| - F(Uint32x4And, 2, 1) \
|
| - F(Uint32x4Or, 2, 1) \
|
| - F(Uint32x4Xor, 2, 1) \
|
| - F(Uint32x4Not, 1, 1) \
|
| - F(Uint32x4ShiftLeftByScalar, 2, 1) \
|
| - F(Uint32x4ShiftRightByScalar, 2, 1) \
|
| - F(Uint32x4Equal, 2, 1) \
|
| - F(Uint32x4NotEqual, 2, 1) \
|
| - F(Uint32x4LessThan, 2, 1) \
|
| - F(Uint32x4LessThanOrEqual, 2, 1) \
|
| - F(Uint32x4GreaterThan, 2, 1) \
|
| - F(Uint32x4GreaterThanOrEqual, 2, 1) \
|
| - F(Uint32x4Select, 3, 1) \
|
| - F(Uint32x4Swizzle, 5, 1) \
|
| - F(Uint32x4Shuffle, 6, 1) \
|
| - F(Uint32x4FromFloat32x4, 1, 1) \
|
| - F(Uint32x4FromInt32x4, 1, 1) \
|
| - F(Uint32x4FromFloat32x4Bits, 1, 1) \
|
| - F(Uint32x4FromInt32x4Bits, 1, 1) \
|
| - F(Uint32x4FromInt16x8Bits, 1, 1) \
|
| - F(Uint32x4FromUint16x8Bits, 1, 1) \
|
| - F(Uint32x4FromInt8x16Bits, 1, 1) \
|
| - F(Uint32x4FromUint8x16Bits, 1, 1) \
|
| - F(Uint32x4Load, 2, 1) \
|
| - F(Uint32x4Load1, 2, 1) \
|
| - F(Uint32x4Load2, 2, 1) \
|
| - F(Uint32x4Load3, 2, 1) \
|
| - F(Uint32x4Store, 3, 1) \
|
| - F(Uint32x4Store1, 3, 1) \
|
| - F(Uint32x4Store2, 3, 1) \
|
| - F(Uint32x4Store3, 3, 1) \
|
| - F(Bool32x4Check, 1, 1) \
|
| - F(Bool32x4ExtractLane, 2, 1) \
|
| - F(Bool32x4ReplaceLane, 3, 1) \
|
| - F(Bool32x4And, 2, 1) \
|
| - F(Bool32x4Or, 2, 1) \
|
| - F(Bool32x4Xor, 2, 1) \
|
| - F(Bool32x4Not, 1, 1) \
|
| - F(Bool32x4AnyTrue, 1, 1) \
|
| - F(Bool32x4AllTrue, 1, 1) \
|
| - F(Bool32x4Swizzle, 5, 1) \
|
| - F(Bool32x4Shuffle, 6, 1) \
|
| - F(Int16x8Check, 1, 1) \
|
| - F(Int16x8ExtractLane, 2, 1) \
|
| - F(Int16x8ReplaceLane, 3, 1) \
|
| - F(Int16x8Neg, 1, 1) \
|
| - F(Int16x8Add, 2, 1) \
|
| - F(Int16x8AddSaturate, 2, 1) \
|
| - F(Int16x8Sub, 2, 1) \
|
| - F(Int16x8SubSaturate, 2, 1) \
|
| - F(Int16x8Mul, 2, 1) \
|
| - F(Int16x8Min, 2, 1) \
|
| - F(Int16x8Max, 2, 1) \
|
| - F(Int16x8And, 2, 1) \
|
| - F(Int16x8Or, 2, 1) \
|
| - F(Int16x8Xor, 2, 1) \
|
| - F(Int16x8Not, 1, 1) \
|
| - F(Int16x8ShiftLeftByScalar, 2, 1) \
|
| - F(Int16x8ShiftRightByScalar, 2, 1) \
|
| - F(Int16x8Equal, 2, 1) \
|
| - F(Int16x8NotEqual, 2, 1) \
|
| - F(Int16x8LessThan, 2, 1) \
|
| - F(Int16x8LessThanOrEqual, 2, 1) \
|
| - F(Int16x8GreaterThan, 2, 1) \
|
| - F(Int16x8GreaterThanOrEqual, 2, 1) \
|
| - F(Int16x8Select, 3, 1) \
|
| - F(Int16x8Swizzle, 9, 1) \
|
| - F(Int16x8Shuffle, 10, 1) \
|
| - F(Int16x8FromUint16x8, 1, 1) \
|
| - F(Int16x8FromFloat32x4Bits, 1, 1) \
|
| - F(Int16x8FromInt32x4Bits, 1, 1) \
|
| - F(Int16x8FromUint32x4Bits, 1, 1) \
|
| - F(Int16x8FromUint16x8Bits, 1, 1) \
|
| - F(Int16x8FromInt8x16Bits, 1, 1) \
|
| - F(Int16x8FromUint8x16Bits, 1, 1) \
|
| - F(Int16x8Load, 2, 1) \
|
| - F(Int16x8Store, 3, 1) \
|
| - F(Uint16x8Check, 1, 1) \
|
| - F(Uint16x8ExtractLane, 2, 1) \
|
| - F(Uint16x8ReplaceLane, 3, 1) \
|
| - F(Uint16x8Add, 2, 1) \
|
| - F(Uint16x8AddSaturate, 2, 1) \
|
| - F(Uint16x8Sub, 2, 1) \
|
| - F(Uint16x8SubSaturate, 2, 1) \
|
| - F(Uint16x8Mul, 2, 1) \
|
| - F(Uint16x8Min, 2, 1) \
|
| - F(Uint16x8Max, 2, 1) \
|
| - F(Uint16x8And, 2, 1) \
|
| - F(Uint16x8Or, 2, 1) \
|
| - F(Uint16x8Xor, 2, 1) \
|
| - F(Uint16x8Not, 1, 1) \
|
| - F(Uint16x8ShiftLeftByScalar, 2, 1) \
|
| - F(Uint16x8ShiftRightByScalar, 2, 1) \
|
| - F(Uint16x8Equal, 2, 1) \
|
| - F(Uint16x8NotEqual, 2, 1) \
|
| - F(Uint16x8LessThan, 2, 1) \
|
| - F(Uint16x8LessThanOrEqual, 2, 1) \
|
| - F(Uint16x8GreaterThan, 2, 1) \
|
| - F(Uint16x8GreaterThanOrEqual, 2, 1) \
|
| - F(Uint16x8Select, 3, 1) \
|
| - F(Uint16x8Swizzle, 9, 1) \
|
| - F(Uint16x8Shuffle, 10, 1) \
|
| - F(Uint16x8FromInt16x8, 1, 1) \
|
| - F(Uint16x8FromFloat32x4Bits, 1, 1) \
|
| - F(Uint16x8FromInt32x4Bits, 1, 1) \
|
| - F(Uint16x8FromUint32x4Bits, 1, 1) \
|
| - F(Uint16x8FromInt16x8Bits, 1, 1) \
|
| - F(Uint16x8FromInt8x16Bits, 1, 1) \
|
| - F(Uint16x8FromUint8x16Bits, 1, 1) \
|
| - F(Uint16x8Load, 2, 1) \
|
| - F(Uint16x8Store, 3, 1) \
|
| - F(Bool16x8Check, 1, 1) \
|
| - F(Bool16x8ExtractLane, 2, 1) \
|
| - F(Bool16x8ReplaceLane, 3, 1) \
|
| - F(Bool16x8And, 2, 1) \
|
| - F(Bool16x8Or, 2, 1) \
|
| - F(Bool16x8Xor, 2, 1) \
|
| - F(Bool16x8Not, 1, 1) \
|
| - F(Bool16x8AnyTrue, 1, 1) \
|
| - F(Bool16x8AllTrue, 1, 1) \
|
| - F(Bool16x8Swizzle, 9, 1) \
|
| - F(Bool16x8Shuffle, 10, 1) \
|
| - F(Int8x16Check, 1, 1) \
|
| - F(Int8x16ExtractLane, 2, 1) \
|
| - F(Int8x16ReplaceLane, 3, 1) \
|
| - F(Int8x16Neg, 1, 1) \
|
| - F(Int8x16Add, 2, 1) \
|
| - F(Int8x16AddSaturate, 2, 1) \
|
| - F(Int8x16Sub, 2, 1) \
|
| - F(Int8x16SubSaturate, 2, 1) \
|
| - F(Int8x16Mul, 2, 1) \
|
| - F(Int8x16Min, 2, 1) \
|
| - F(Int8x16Max, 2, 1) \
|
| - F(Int8x16And, 2, 1) \
|
| - F(Int8x16Or, 2, 1) \
|
| - F(Int8x16Xor, 2, 1) \
|
| - F(Int8x16Not, 1, 1) \
|
| - F(Int8x16ShiftLeftByScalar, 2, 1) \
|
| - F(Int8x16ShiftRightByScalar, 2, 1) \
|
| - F(Int8x16Equal, 2, 1) \
|
| - F(Int8x16NotEqual, 2, 1) \
|
| - F(Int8x16LessThan, 2, 1) \
|
| - F(Int8x16LessThanOrEqual, 2, 1) \
|
| - F(Int8x16GreaterThan, 2, 1) \
|
| - F(Int8x16GreaterThanOrEqual, 2, 1) \
|
| - F(Int8x16Select, 3, 1) \
|
| - F(Int8x16Swizzle, 17, 1) \
|
| - F(Int8x16Shuffle, 18, 1) \
|
| - F(Int8x16FromUint8x16, 1, 1) \
|
| - F(Int8x16FromFloat32x4Bits, 1, 1) \
|
| - F(Int8x16FromInt32x4Bits, 1, 1) \
|
| - F(Int8x16FromUint32x4Bits, 1, 1) \
|
| - F(Int8x16FromInt16x8Bits, 1, 1) \
|
| - F(Int8x16FromUint16x8Bits, 1, 1) \
|
| - F(Int8x16FromUint8x16Bits, 1, 1) \
|
| - F(Int8x16Load, 2, 1) \
|
| - F(Int8x16Store, 3, 1) \
|
| - F(Uint8x16Check, 1, 1) \
|
| - F(Uint8x16ExtractLane, 2, 1) \
|
| - F(Uint8x16ReplaceLane, 3, 1) \
|
| - F(Uint8x16Add, 2, 1) \
|
| - F(Uint8x16AddSaturate, 2, 1) \
|
| - F(Uint8x16Sub, 2, 1) \
|
| - F(Uint8x16SubSaturate, 2, 1) \
|
| - F(Uint8x16Mul, 2, 1) \
|
| - F(Uint8x16Min, 2, 1) \
|
| - F(Uint8x16Max, 2, 1) \
|
| - F(Uint8x16And, 2, 1) \
|
| - F(Uint8x16Or, 2, 1) \
|
| - F(Uint8x16Xor, 2, 1) \
|
| - F(Uint8x16Not, 1, 1) \
|
| - F(Uint8x16ShiftLeftByScalar, 2, 1) \
|
| - F(Uint8x16ShiftRightByScalar, 2, 1) \
|
| - F(Uint8x16Equal, 2, 1) \
|
| - F(Uint8x16NotEqual, 2, 1) \
|
| - F(Uint8x16LessThan, 2, 1) \
|
| - F(Uint8x16LessThanOrEqual, 2, 1) \
|
| - F(Uint8x16GreaterThan, 2, 1) \
|
| - F(Uint8x16GreaterThanOrEqual, 2, 1) \
|
| - F(Uint8x16Select, 3, 1) \
|
| - F(Uint8x16Swizzle, 17, 1) \
|
| - F(Uint8x16Shuffle, 18, 1) \
|
| - F(Uint8x16FromInt8x16, 1, 1) \
|
| - F(Uint8x16FromFloat32x4Bits, 1, 1) \
|
| - F(Uint8x16FromInt32x4Bits, 1, 1) \
|
| - F(Uint8x16FromUint32x4Bits, 1, 1) \
|
| - F(Uint8x16FromInt16x8Bits, 1, 1) \
|
| - F(Uint8x16FromUint16x8Bits, 1, 1) \
|
| - F(Uint8x16FromInt8x16Bits, 1, 1) \
|
| - F(Uint8x16Load, 2, 1) \
|
| - F(Uint8x16Store, 3, 1) \
|
| - F(Bool8x16Check, 1, 1) \
|
| - F(Bool8x16ExtractLane, 2, 1) \
|
| - F(Bool8x16ReplaceLane, 3, 1) \
|
| - F(Bool8x16And, 2, 1) \
|
| - F(Bool8x16Or, 2, 1) \
|
| - F(Bool8x16Xor, 2, 1) \
|
| - F(Bool8x16Not, 1, 1) \
|
| - F(Bool8x16AnyTrue, 1, 1) \
|
| - F(Bool8x16AllTrue, 1, 1) \
|
| - F(Bool8x16Swizzle, 17, 1) \
|
| - F(Bool8x16Shuffle, 18, 1)
|
| +#define FOR_EACH_INTRINSIC_SIMD(F) \
|
| + F(IsSimdValue, 1, 1) \
|
| + F(SimdSameValue, 2, 1) \
|
| + F(SimdSameValueZero, 2, 1) \
|
| + F(CreateFloat32x4, 4, 1) \
|
| + F(CreateInt32x4, 4, 1) \
|
| + F(CreateUint32x4, 4, 1) \
|
| + F(CreateBool32x4, 4, 1) \
|
| + F(CreateInt16x8, 8, 1) \
|
| + F(CreateUint16x8, 8, 1) \
|
| + F(CreateBool16x8, 8, 1) \
|
| + F(CreateInt8x16, 16, 1) \
|
| + F(CreateUint8x16, 16, 1) \
|
| + F(CreateBool8x16, 16, 1) \
|
| + F(Float32x4Check, 1, 1) \
|
| + F(Float32x4ExtractLane, 2, 1) \
|
| + F(Float32x4ReplaceLane, 3, 1) \
|
| + F(Float32x4Abs, 1, 1) \
|
| + F(Float32x4Neg, 1, 1) \
|
| + F(Float32x4Sqrt, 1, 1) \
|
| + F(Float32x4RecipApprox, 1, 1) \
|
| + F(Float32x4RecipSqrtApprox, 1, 1) \
|
| + F(Float32x4Add, 2, 1) \
|
| + F(Float32x4Sub, 2, 1) \
|
| + F(Float32x4Mul, 2, 1) \
|
| + F(Float32x4Div, 2, 1) \
|
| + F(Float32x4Min, 2, 1) \
|
| + F(Float32x4Max, 2, 1) \
|
| + F(Float32x4MinNum, 2, 1) \
|
| + F(Float32x4MaxNum, 2, 1) \
|
| + F(Float32x4Equal, 2, 1) \
|
| + F(Float32x4NotEqual, 2, 1) \
|
| + F(Float32x4LessThan, 2, 1) \
|
| + F(Float32x4LessThanOrEqual, 2, 1) \
|
| + F(Float32x4GreaterThan, 2, 1) \
|
| + F(Float32x4GreaterThanOrEqual, 2, 1) \
|
| + F(Float32x4Select, 3, 1) \
|
| + F(Float32x4Swizzle, 5, 1) \
|
| + F(Float32x4Shuffle, 6, 1) \
|
| + F(Float32x4FromInt32x4, 1, 1) \
|
| + F(Float32x4FromUint32x4, 1, 1) \
|
| + F(Float32x4FromInt32x4Bits, 1, 1) \
|
| + F(Float32x4FromUint32x4Bits, 1, 1) \
|
| + F(Float32x4FromInt16x8Bits, 1, 1) \
|
| + F(Float32x4FromUint16x8Bits, 1, 1) \
|
| + F(Float32x4FromInt8x16Bits, 1, 1) \
|
| + F(Float32x4FromUint8x16Bits, 1, 1) \
|
| + F(Float32x4Load, 2, 1) \
|
| + F(Float32x4Load1, 2, 1) \
|
| + F(Float32x4Load2, 2, 1) \
|
| + F(Float32x4Load3, 2, 1) \
|
| + F(Float32x4Store, 3, 1) \
|
| + F(Float32x4Store1, 3, 1) \
|
| + F(Float32x4Store2, 3, 1) \
|
| + F(Float32x4Store3, 3, 1) \
|
| + F(Int32x4Check, 1, 1) \
|
| + F(Int32x4ExtractLane, 2, 1) \
|
| + F(Int32x4ReplaceLane, 3, 1) \
|
| + F(Int32x4Neg, 1, 1) \
|
| + F(Int32x4Add, 2, 1) \
|
| + F(Int32x4Sub, 2, 1) \
|
| + F(Int32x4Mul, 2, 1) \
|
| + F(Int32x4Min, 2, 1) \
|
| + F(Int32x4Max, 2, 1) \
|
| + F(Int32x4And, 2, 1) \
|
| + F(Int32x4Or, 2, 1) \
|
| + F(Int32x4Xor, 2, 1) \
|
| + F(Int32x4Not, 1, 1) \
|
| + F(Int32x4ShiftLeftByScalar, 2, 1) \
|
| + F(Int32x4ShiftRightByScalar, 2, 1) \
|
| + F(Int32x4Equal, 2, 1) \
|
| + F(Int32x4NotEqual, 2, 1) \
|
| + F(Int32x4LessThan, 2, 1) \
|
| + F(Int32x4LessThanOrEqual, 2, 1) \
|
| + F(Int32x4GreaterThan, 2, 1) \
|
| + F(Int32x4GreaterThanOrEqual, 2, 1) \
|
| + F(Int32x4Select, 3, 1) \
|
| + F(Int32x4Swizzle, 5, 1) \
|
| + F(Int32x4Shuffle, 6, 1) \
|
| + F(Int32x4FromFloat32x4, 1, 1) \
|
| + F(Int32x4FromUint32x4, 1, 1) \
|
| + F(Int32x4FromFloat32x4Bits, 1, 1) \
|
| + F(Int32x4FromUint32x4Bits, 1, 1) \
|
| + F(Int32x4FromInt16x8Bits, 1, 1) \
|
| + F(Int32x4FromUint16x8Bits, 1, 1) \
|
| + F(Int32x4FromInt8x16Bits, 1, 1) \
|
| + F(Int32x4FromUint8x16Bits, 1, 1) \
|
| + F(Int32x4Load, 2, 1) \
|
| + F(Int32x4Load1, 2, 1) \
|
| + F(Int32x4Load2, 2, 1) \
|
| + F(Int32x4Load3, 2, 1) \
|
| + F(Int32x4Store, 3, 1) \
|
| + F(Int32x4Store1, 3, 1) \
|
| + F(Int32x4Store2, 3, 1) \
|
| + F(Int32x4Store3, 3, 1) \
|
| + F(Uint32x4Check, 1, 1) \
|
| + F(Uint32x4ExtractLane, 2, 1) \
|
| + F(Uint32x4ReplaceLane, 3, 1) \
|
| + F(Uint32x4Add, 2, 1) \
|
| + F(Uint32x4Sub, 2, 1) \
|
| + F(Uint32x4Mul, 2, 1) \
|
| + F(Uint32x4Min, 2, 1) \
|
| + F(Uint32x4Max, 2, 1) \
|
| + F(Uint32x4And, 2, 1) \
|
| + F(Uint32x4Or, 2, 1) \
|
| + F(Uint32x4Xor, 2, 1) \
|
| + F(Uint32x4Not, 1, 1) \
|
| + F(Uint32x4ShiftLeftByScalar, 2, 1) \
|
| + F(Uint32x4ShiftRightByScalar, 2, 1) \
|
| + F(Uint32x4Equal, 2, 1) \
|
| + F(Uint32x4NotEqual, 2, 1) \
|
| + F(Uint32x4LessThan, 2, 1) \
|
| + F(Uint32x4LessThanOrEqual, 2, 1) \
|
| + F(Uint32x4GreaterThan, 2, 1) \
|
| + F(Uint32x4GreaterThanOrEqual, 2, 1) \
|
| + F(Uint32x4Select, 3, 1) \
|
| + F(Uint32x4Swizzle, 5, 1) \
|
| + F(Uint32x4Shuffle, 6, 1) \
|
| + F(Uint32x4FromFloat32x4, 1, 1) \
|
| + F(Uint32x4FromInt32x4, 1, 1) \
|
| + F(Uint32x4FromFloat32x4Bits, 1, 1) \
|
| + F(Uint32x4FromInt32x4Bits, 1, 1) \
|
| + F(Uint32x4FromInt16x8Bits, 1, 1) \
|
| + F(Uint32x4FromUint16x8Bits, 1, 1) \
|
| + F(Uint32x4FromInt8x16Bits, 1, 1) \
|
| + F(Uint32x4FromUint8x16Bits, 1, 1) \
|
| + F(Uint32x4Load, 2, 1) \
|
| + F(Uint32x4Load1, 2, 1) \
|
| + F(Uint32x4Load2, 2, 1) \
|
| + F(Uint32x4Load3, 2, 1) \
|
| + F(Uint32x4Store, 3, 1) \
|
| + F(Uint32x4Store1, 3, 1) \
|
| + F(Uint32x4Store2, 3, 1) \
|
| + F(Uint32x4Store3, 3, 1) \
|
| + F(Bool32x4Check, 1, 1) \
|
| + F(Bool32x4ExtractLane, 2, 1) \
|
| + F(Bool32x4ReplaceLane, 3, 1) \
|
| + F(Bool32x4And, 2, 1) \
|
| + F(Bool32x4Or, 2, 1) \
|
| + F(Bool32x4Xor, 2, 1) \
|
| + F(Bool32x4Not, 1, 1) \
|
| + F(Bool32x4AnyTrue, 1, 1) \
|
| + F(Bool32x4AllTrue, 1, 1) \
|
| + F(Bool32x4Swizzle, 5, 1) \
|
| + F(Bool32x4Shuffle, 6, 1) \
|
| + F(Bool32x4Equal, 2, 1) \
|
| + F(Bool32x4NotEqual, 2, 1) \
|
| + F(Int16x8Check, 1, 1) \
|
| + F(Int16x8ExtractLane, 2, 1) \
|
| + F(Int16x8ReplaceLane, 3, 1) \
|
| + F(Int16x8Neg, 1, 1) \
|
| + F(Int16x8Add, 2, 1) \
|
| + F(Int16x8AddSaturate, 2, 1) \
|
| + F(Int16x8Sub, 2, 1) \
|
| + F(Int16x8SubSaturate, 2, 1) \
|
| + F(Int16x8Mul, 2, 1) \
|
| + F(Int16x8Min, 2, 1) \
|
| + F(Int16x8Max, 2, 1) \
|
| + F(Int16x8And, 2, 1) \
|
| + F(Int16x8Or, 2, 1) \
|
| + F(Int16x8Xor, 2, 1) \
|
| + F(Int16x8Not, 1, 1) \
|
| + F(Int16x8ShiftLeftByScalar, 2, 1) \
|
| + F(Int16x8ShiftRightByScalar, 2, 1) \
|
| + F(Int16x8Equal, 2, 1) \
|
| + F(Int16x8NotEqual, 2, 1) \
|
| + F(Int16x8LessThan, 2, 1) \
|
| + F(Int16x8LessThanOrEqual, 2, 1) \
|
| + F(Int16x8GreaterThan, 2, 1) \
|
| + F(Int16x8GreaterThanOrEqual, 2, 1) \
|
| + F(Int16x8Select, 3, 1) \
|
| + F(Int16x8Swizzle, 9, 1) \
|
| + F(Int16x8Shuffle, 10, 1) \
|
| + F(Int16x8FromUint16x8, 1, 1) \
|
| + F(Int16x8FromFloat32x4Bits, 1, 1) \
|
| + F(Int16x8FromInt32x4Bits, 1, 1) \
|
| + F(Int16x8FromUint32x4Bits, 1, 1) \
|
| + F(Int16x8FromUint16x8Bits, 1, 1) \
|
| + F(Int16x8FromInt8x16Bits, 1, 1) \
|
| + F(Int16x8FromUint8x16Bits, 1, 1) \
|
| + F(Int16x8Load, 2, 1) \
|
| + F(Int16x8Store, 3, 1) \
|
| + F(Uint16x8Check, 1, 1) \
|
| + F(Uint16x8ExtractLane, 2, 1) \
|
| + F(Uint16x8ReplaceLane, 3, 1) \
|
| + F(Uint16x8Add, 2, 1) \
|
| + F(Uint16x8AddSaturate, 2, 1) \
|
| + F(Uint16x8Sub, 2, 1) \
|
| + F(Uint16x8SubSaturate, 2, 1) \
|
| + F(Uint16x8Mul, 2, 1) \
|
| + F(Uint16x8Min, 2, 1) \
|
| + F(Uint16x8Max, 2, 1) \
|
| + F(Uint16x8And, 2, 1) \
|
| + F(Uint16x8Or, 2, 1) \
|
| + F(Uint16x8Xor, 2, 1) \
|
| + F(Uint16x8Not, 1, 1) \
|
| + F(Uint16x8ShiftLeftByScalar, 2, 1) \
|
| + F(Uint16x8ShiftRightByScalar, 2, 1) \
|
| + F(Uint16x8Equal, 2, 1) \
|
| + F(Uint16x8NotEqual, 2, 1) \
|
| + F(Uint16x8LessThan, 2, 1) \
|
| + F(Uint16x8LessThanOrEqual, 2, 1) \
|
| + F(Uint16x8GreaterThan, 2, 1) \
|
| + F(Uint16x8GreaterThanOrEqual, 2, 1) \
|
| + F(Uint16x8Select, 3, 1) \
|
| + F(Uint16x8Swizzle, 9, 1) \
|
| + F(Uint16x8Shuffle, 10, 1) \
|
| + F(Uint16x8FromInt16x8, 1, 1) \
|
| + F(Uint16x8FromFloat32x4Bits, 1, 1) \
|
| + F(Uint16x8FromInt32x4Bits, 1, 1) \
|
| + F(Uint16x8FromUint32x4Bits, 1, 1) \
|
| + F(Uint16x8FromInt16x8Bits, 1, 1) \
|
| + F(Uint16x8FromInt8x16Bits, 1, 1) \
|
| + F(Uint16x8FromUint8x16Bits, 1, 1) \
|
| + F(Uint16x8Load, 2, 1) \
|
| + F(Uint16x8Store, 3, 1) \
|
| + F(Bool16x8Check, 1, 1) \
|
| + F(Bool16x8ExtractLane, 2, 1) \
|
| + F(Bool16x8ReplaceLane, 3, 1) \
|
| + F(Bool16x8And, 2, 1) \
|
| + F(Bool16x8Or, 2, 1) \
|
| + F(Bool16x8Xor, 2, 1) \
|
| + F(Bool16x8Not, 1, 1) \
|
| + F(Bool16x8AnyTrue, 1, 1) \
|
| + F(Bool16x8AllTrue, 1, 1) \
|
| + F(Bool16x8Swizzle, 9, 1) \
|
| + F(Bool16x8Shuffle, 10, 1) \
|
| + F(Bool16x8Equal, 2, 1) \
|
| + F(Bool16x8NotEqual, 2, 1) \
|
| + F(Int8x16Check, 1, 1) \
|
| + F(Int8x16ExtractLane, 2, 1) \
|
| + F(Int8x16ReplaceLane, 3, 1) \
|
| + F(Int8x16Neg, 1, 1) \
|
| + F(Int8x16Add, 2, 1) \
|
| + F(Int8x16AddSaturate, 2, 1) \
|
| + F(Int8x16Sub, 2, 1) \
|
| + F(Int8x16SubSaturate, 2, 1) \
|
| + F(Int8x16Mul, 2, 1) \
|
| + F(Int8x16Min, 2, 1) \
|
| + F(Int8x16Max, 2, 1) \
|
| + F(Int8x16And, 2, 1) \
|
| + F(Int8x16Or, 2, 1) \
|
| + F(Int8x16Xor, 2, 1) \
|
| + F(Int8x16Not, 1, 1) \
|
| + F(Int8x16ShiftLeftByScalar, 2, 1) \
|
| + F(Int8x16ShiftRightByScalar, 2, 1) \
|
| + F(Int8x16Equal, 2, 1) \
|
| + F(Int8x16NotEqual, 2, 1) \
|
| + F(Int8x16LessThan, 2, 1) \
|
| + F(Int8x16LessThanOrEqual, 2, 1) \
|
| + F(Int8x16GreaterThan, 2, 1) \
|
| + F(Int8x16GreaterThanOrEqual, 2, 1) \
|
| + F(Int8x16Select, 3, 1) \
|
| + F(Int8x16Swizzle, 17, 1) \
|
| + F(Int8x16Shuffle, 18, 1) \
|
| + F(Int8x16FromUint8x16, 1, 1) \
|
| + F(Int8x16FromFloat32x4Bits, 1, 1) \
|
| + F(Int8x16FromInt32x4Bits, 1, 1) \
|
| + F(Int8x16FromUint32x4Bits, 1, 1) \
|
| + F(Int8x16FromInt16x8Bits, 1, 1) \
|
| + F(Int8x16FromUint16x8Bits, 1, 1) \
|
| + F(Int8x16FromUint8x16Bits, 1, 1) \
|
| + F(Int8x16Load, 2, 1) \
|
| + F(Int8x16Store, 3, 1) \
|
| + F(Uint8x16Check, 1, 1) \
|
| + F(Uint8x16ExtractLane, 2, 1) \
|
| + F(Uint8x16ReplaceLane, 3, 1) \
|
| + F(Uint8x16Add, 2, 1) \
|
| + F(Uint8x16AddSaturate, 2, 1) \
|
| + F(Uint8x16Sub, 2, 1) \
|
| + F(Uint8x16SubSaturate, 2, 1) \
|
| + F(Uint8x16Mul, 2, 1) \
|
| + F(Uint8x16Min, 2, 1) \
|
| + F(Uint8x16Max, 2, 1) \
|
| + F(Uint8x16And, 2, 1) \
|
| + F(Uint8x16Or, 2, 1) \
|
| + F(Uint8x16Xor, 2, 1) \
|
| + F(Uint8x16Not, 1, 1) \
|
| + F(Uint8x16ShiftLeftByScalar, 2, 1) \
|
| + F(Uint8x16ShiftRightByScalar, 2, 1) \
|
| + F(Uint8x16Equal, 2, 1) \
|
| + F(Uint8x16NotEqual, 2, 1) \
|
| + F(Uint8x16LessThan, 2, 1) \
|
| + F(Uint8x16LessThanOrEqual, 2, 1) \
|
| + F(Uint8x16GreaterThan, 2, 1) \
|
| + F(Uint8x16GreaterThanOrEqual, 2, 1) \
|
| + F(Uint8x16Select, 3, 1) \
|
| + F(Uint8x16Swizzle, 17, 1) \
|
| + F(Uint8x16Shuffle, 18, 1) \
|
| + F(Uint8x16FromInt8x16, 1, 1) \
|
| + F(Uint8x16FromFloat32x4Bits, 1, 1) \
|
| + F(Uint8x16FromInt32x4Bits, 1, 1) \
|
| + F(Uint8x16FromUint32x4Bits, 1, 1) \
|
| + F(Uint8x16FromInt16x8Bits, 1, 1) \
|
| + F(Uint8x16FromUint16x8Bits, 1, 1) \
|
| + F(Uint8x16FromInt8x16Bits, 1, 1) \
|
| + F(Uint8x16Load, 2, 1) \
|
| + F(Uint8x16Store, 3, 1) \
|
| + F(Bool8x16Check, 1, 1) \
|
| + F(Bool8x16ExtractLane, 2, 1) \
|
| + F(Bool8x16ReplaceLane, 3, 1) \
|
| + F(Bool8x16And, 2, 1) \
|
| + F(Bool8x16Or, 2, 1) \
|
| + F(Bool8x16Xor, 2, 1) \
|
| + F(Bool8x16Not, 1, 1) \
|
| + F(Bool8x16AnyTrue, 1, 1) \
|
| + F(Bool8x16AllTrue, 1, 1) \
|
| + F(Bool8x16Swizzle, 17, 1) \
|
| + F(Bool8x16Shuffle, 18, 1) \
|
| + F(Bool8x16Equal, 2, 1) \
|
| + F(Bool8x16NotEqual, 2, 1)
|
|
|
|
|
| #define FOR_EACH_INTRINSIC_STRINGS(F) \
|
| @@ -1182,6 +1190,26 @@ class Runtime : public AllStatic {
|
| };
|
|
|
|
|
| +struct RuntimeCallStats {
|
| +#define CALL_RUNTIME_COUNTER(name, nargs, ressize) \
|
| + uint32_t Count_Runtime_##name; \
|
| + base::TimeDelta Time_Runtime_##name;
|
| + FOR_EACH_INTRINSIC(CALL_RUNTIME_COUNTER)
|
| +#undef CALL_RUNTIME_COUNTER
|
| +
|
| + // Dummy counter for the unexpected stub miss.
|
| + uint32_t Count_UnexpectedStubMiss;
|
| + base::TimeDelta Time_UnexpectedStubMiss;
|
| +
|
| + bool in_runtime_call = false;
|
| +
|
| + void Reset();
|
| + void Print(std::ostream& os);
|
| +
|
| + RuntimeCallStats() { Reset(); }
|
| +};
|
| +
|
| +
|
| class RuntimeState {
|
| public:
|
| unibrow::Mapping<unibrow::ToUppercase, 128>* to_upper_mapping() {
|
| @@ -1200,11 +1228,15 @@ class RuntimeState {
|
| redirected_intrinsic_functions_.Reset(redirected_intrinsic_functions);
|
| }
|
|
|
| + RuntimeCallStats* runtime_call_stats() { return &runtime_call_stats_; }
|
| +
|
| private:
|
| RuntimeState() {}
|
| unibrow::Mapping<unibrow::ToUppercase, 128> to_upper_mapping_;
|
| unibrow::Mapping<unibrow::ToLowercase, 128> to_lower_mapping_;
|
|
|
| + RuntimeCallStats runtime_call_stats_;
|
| +
|
| base::SmartArrayPointer<Runtime::Function> redirected_intrinsic_functions_;
|
|
|
| friend class Isolate;
|
|
|