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

Unified Diff: src/code-stub-assembler.h

Issue 2183923003: [stubs,interpreter] Optimise SMI loading for 64-bit targets. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Optimizing SMI loads at code stub assembler level. Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/builtins/builtins-string.cc ('k') | src/code-stub-assembler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/code-stub-assembler.h
diff --git a/src/code-stub-assembler.h b/src/code-stub-assembler.h
index c426b1ad2af7c25dc98ef16f1d03f55fd2100ed4..eda2bc3b4c2a00f802ebe9e1fbf31a1ad6cfe838 100644
--- a/src/code-stub-assembler.h
+++ b/src/code-stub-assembler.h
@@ -156,6 +156,15 @@ class CodeStubAssembler : public compiler::CodeAssembler {
compiler::Node* LoadObjectField(compiler::Node* object,
compiler::Node* offset,
MachineType rep = MachineType::AnyTagged());
+ // Load a SMI field and untag it.
+ compiler::Node* LoadAndUntagObjectField(compiler::Node* object, int offset);
+ // Load a SMI field, untag it, and convert to Word32.
+ compiler::Node* LoadAndUntagToWord32ObjectField(compiler::Node* object,
+ int offset);
+ // Load a SMI and untag it.
+ compiler::Node* LoadAndUntagSmi(compiler::Node* base, int index);
+ // Load a SMI root, untag it, and convert to Word32.
+ compiler::Node* LoadAndUntagToWord32Root(Heap::RootListIndex root_index);
// Load the floating point value of a HeapNumber.
compiler::Node* LoadHeapNumberValue(compiler::Node* object);
@@ -170,7 +179,7 @@ class CodeStubAssembler : public compiler::CodeAssembler {
// Load the elements backing store of a JSObject.
compiler::Node* LoadElements(compiler::Node* object);
// Load the length of a fixed array base instance.
- compiler::Node* LoadFixedArrayBaseLength(compiler::Node* array);
+ compiler::Node* LoadAndUntagFixedArrayBaseLength(compiler::Node* array);
// Load the bit field of a Map.
compiler::Node* LoadMapBitField(compiler::Node* map);
// Load bit field 2 of a map.
@@ -212,6 +221,11 @@ class CodeStubAssembler : public compiler::CodeAssembler {
compiler::Node* object, compiler::Node* int32_index,
int additional_offset = 0,
ParameterMode parameter_mode = INTEGER_PARAMETERS);
+ // Load an array element from a FixedArray, untag it and return it as Word32.
+ compiler::Node* LoadAndUntagToWord32FixedArrayElement(
+ compiler::Node* object, compiler::Node* int32_index,
+ int additional_offset = 0,
+ ParameterMode parameter_mode = INTEGER_PARAMETERS);
// Load an array element from a FixedDoubleArray.
compiler::Node* LoadFixedDoubleArrayElement(
compiler::Node* object, compiler::Node* int32_index,
« no previous file with comments | « src/builtins/builtins-string.cc ('k') | src/code-stub-assembler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698