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

Side by Side Diff: test/unittests/interpreter/bytecode-array-builder-unittest.cc

Issue 1546643002: [Interpreter] Updates load/store global and named property to accept variable name. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years 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 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 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/interpreter/bytecode-array-builder.h" 7 #include "src/interpreter/bytecode-array-builder.h"
8 #include "src/interpreter/bytecode-array-iterator.h" 8 #include "src/interpreter/bytecode-array-iterator.h"
9 #include "test/unittests/test-utils.h" 9 #include "test/unittests/test-utils.h"
10 10
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 Register reg(0); 44 Register reg(0);
45 builder.LoadAccumulatorWithRegister(reg) 45 builder.LoadAccumulatorWithRegister(reg)
46 .LoadNull() 46 .LoadNull()
47 .StoreAccumulatorInRegister(reg); 47 .StoreAccumulatorInRegister(reg);
48 48
49 // Emit register-register transfer. 49 // Emit register-register transfer.
50 Register other(1); 50 Register other(1);
51 builder.MoveRegister(reg, other); 51 builder.MoveRegister(reg, other);
52 52
53 // Emit global load / store operations. 53 // Emit global load / store operations.
54 builder.LoadGlobal(0, 1, LanguageMode::SLOPPY, TypeofMode::NOT_INSIDE_TYPEOF) 54 Factory* factory = isolate()->factory();
55 .LoadGlobal(0, 1, LanguageMode::STRICT, TypeofMode::NOT_INSIDE_TYPEOF) 55 Handle<String> name = factory->NewStringFromStaticChars("var_name");
56 .LoadGlobal(0, 1, LanguageMode::SLOPPY, TypeofMode::INSIDE_TYPEOF) 56 builder.LoadGlobal(name, 1, LanguageMode::SLOPPY,
57 .LoadGlobal(0, 1, LanguageMode::STRICT, TypeofMode::INSIDE_TYPEOF)
58 .StoreGlobal(0, 1, LanguageMode::SLOPPY)
59 .StoreGlobal(0, 1, LanguageMode::STRICT);
60
61 // Emit wide global load / store operations.
62 builder.LoadGlobal(0, 1024, LanguageMode::SLOPPY,
63 TypeofMode::NOT_INSIDE_TYPEOF) 57 TypeofMode::NOT_INSIDE_TYPEOF)
64 .LoadGlobal(1024, 1, LanguageMode::STRICT, TypeofMode::NOT_INSIDE_TYPEOF) 58 .LoadGlobal(name, 1, LanguageMode::STRICT, TypeofMode::NOT_INSIDE_TYPEOF)
65 .LoadGlobal(0, 1024, LanguageMode::SLOPPY, TypeofMode::INSIDE_TYPEOF) 59 .LoadGlobal(name, 1, LanguageMode::SLOPPY, TypeofMode::INSIDE_TYPEOF)
66 .LoadGlobal(1024, 1, LanguageMode::STRICT, TypeofMode::INSIDE_TYPEOF) 60 .LoadGlobal(name, 1, LanguageMode::STRICT, TypeofMode::INSIDE_TYPEOF)
67 .StoreGlobal(0, 1024, LanguageMode::SLOPPY) 61 .StoreGlobal(name, 1, LanguageMode::SLOPPY)
68 .StoreGlobal(1024, 1, LanguageMode::STRICT); 62 .StoreGlobal(name, 1, LanguageMode::STRICT);
69 63
70 // Emit context operations. 64 // Emit context operations.
71 builder.PushContext(reg); 65 builder.PushContext(reg);
72 builder.PopContext(reg); 66 builder.PopContext(reg);
73 builder.LoadContextSlot(reg, 1); 67 builder.LoadContextSlot(reg, 1);
74 builder.StoreContextSlot(reg, 1); 68 builder.StoreContextSlot(reg, 1);
75 69
76 // Emit load / store property operations. 70 // Emit load / store property operations.
77 builder.LoadNamedProperty(reg, 0, 0, LanguageMode::SLOPPY) 71 builder.LoadNamedProperty(reg, name, 0, LanguageMode::SLOPPY)
78 .LoadKeyedProperty(reg, 0, LanguageMode::SLOPPY) 72 .LoadKeyedProperty(reg, 0, LanguageMode::SLOPPY)
79 .StoreNamedProperty(reg, 0, 0, LanguageMode::SLOPPY) 73 .StoreNamedProperty(reg, name, 0, LanguageMode::SLOPPY)
80 .StoreKeyedProperty(reg, reg, 0, LanguageMode::SLOPPY) 74 .StoreKeyedProperty(reg, reg, 0, LanguageMode::SLOPPY)
81 .LoadNamedProperty(reg, 0, 0, LanguageMode::STRICT) 75 .LoadNamedProperty(reg, name, 0, LanguageMode::STRICT)
82 .LoadKeyedProperty(reg, 0, LanguageMode::STRICT) 76 .LoadKeyedProperty(reg, 0, LanguageMode::STRICT)
83 .StoreNamedProperty(reg, 0, 0, LanguageMode::STRICT) 77 .StoreNamedProperty(reg, name, 0, LanguageMode::STRICT)
84 .StoreKeyedProperty(reg, reg, 0, LanguageMode::STRICT); 78 .StoreKeyedProperty(reg, reg, 0, LanguageMode::STRICT);
85 79
86 // Emit wide load / store property operations.
87 builder.LoadNamedProperty(reg, 2056, 0, LanguageMode::SLOPPY)
88 .LoadKeyedProperty(reg, 2056, LanguageMode::SLOPPY)
89 .StoreNamedProperty(reg, 0, 2056, LanguageMode::SLOPPY)
90 .StoreKeyedProperty(reg, reg, 2056, LanguageMode::SLOPPY)
91 .LoadNamedProperty(reg, 2056, 0, LanguageMode::STRICT)
92 .LoadKeyedProperty(reg, 2056, LanguageMode::STRICT)
93 .StoreNamedProperty(reg, 0, 2056, LanguageMode::STRICT)
94 .StoreKeyedProperty(reg, reg, 2056, LanguageMode::STRICT);
95
96 // Emit load / store lookup slots. 80 // Emit load / store lookup slots.
97 Factory* factory = isolate()->factory();
98 Handle<String> name = factory->NewStringFromStaticChars("var_name");
99 builder.LoadLookupSlot(name, TypeofMode::NOT_INSIDE_TYPEOF) 81 builder.LoadLookupSlot(name, TypeofMode::NOT_INSIDE_TYPEOF)
100 .LoadLookupSlot(name, TypeofMode::INSIDE_TYPEOF) 82 .LoadLookupSlot(name, TypeofMode::INSIDE_TYPEOF)
101 .StoreLookupSlot(name, LanguageMode::SLOPPY) 83 .StoreLookupSlot(name, LanguageMode::SLOPPY)
102 .StoreLookupSlot(name, LanguageMode::STRICT); 84 .StoreLookupSlot(name, LanguageMode::STRICT);
103 85
104 // Emit closure operations. 86 // Emit closure operations.
105 Handle<SharedFunctionInfo> shared_info = factory->NewSharedFunctionInfo( 87 Handle<SharedFunctionInfo> shared_info = factory->NewSharedFunctionInfo(
106 factory->NewStringFromStaticChars("function_a"), MaybeHandle<Code>(), 88 factory->NewStringFromStaticChars("function_a"), MaybeHandle<Code>(),
107 false); 89 false);
108 builder.CreateClosure(shared_info, NOT_TENURED); 90 builder.CreateClosure(shared_info, NOT_TENURED);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 .Bind(&after_throw); 199 .Bind(&after_throw);
218 200
219 builder.ForInPrepare(reg, reg, reg) 201 builder.ForInPrepare(reg, reg, reg)
220 .ForInDone(reg, reg) 202 .ForInDone(reg, reg)
221 .ForInNext(reg, reg, reg, reg) 203 .ForInNext(reg, reg, reg, reg)
222 .ForInStep(reg); 204 .ForInStep(reg);
223 205
224 // Wide constant pool loads 206 // Wide constant pool loads
225 for (int i = 0; i < 256; i++) { 207 for (int i = 0; i < 256; i++) {
226 // Emit junk in constant pool to force wide constant pool index. 208 // Emit junk in constant pool to force wide constant pool index.
227 builder.GetConstantPoolEntry(handle(Smi::FromInt(i), isolate())); 209 builder.LoadLiteral(factory->NewNumber(2.5321 + i));
228 } 210 }
229 builder.LoadLiteral(Smi::FromInt(20000000)); 211 builder.LoadLiteral(Smi::FromInt(20000000));
212 Handle<String> wide_name = factory->NewStringFromStaticChars("var_wide_name");
213
214 // Emit wide global load / store operations.
215 builder.LoadGlobal(name, 1024, LanguageMode::SLOPPY,
216 TypeofMode::NOT_INSIDE_TYPEOF)
217 .LoadGlobal(wide_name, 1, LanguageMode::STRICT,
218 TypeofMode::NOT_INSIDE_TYPEOF)
219 .LoadGlobal(name, 1024, LanguageMode::SLOPPY, TypeofMode::INSIDE_TYPEOF)
220 .LoadGlobal(wide_name, 1, LanguageMode::STRICT, TypeofMode::INSIDE_TYPEOF)
221 .StoreGlobal(name, 1024, LanguageMode::SLOPPY)
222 .StoreGlobal(wide_name, 1, LanguageMode::STRICT);
223
224 // Emit wide load / store property operations.
225 builder.LoadNamedProperty(reg, wide_name, 0, LanguageMode::SLOPPY)
226 .LoadKeyedProperty(reg, 2056, LanguageMode::SLOPPY)
227 .StoreNamedProperty(reg, wide_name, 0, LanguageMode::SLOPPY)
228 .StoreKeyedProperty(reg, reg, 2056, LanguageMode::SLOPPY)
229 .LoadNamedProperty(reg, wide_name, 0, LanguageMode::STRICT)
230 .LoadKeyedProperty(reg, 2056, LanguageMode::STRICT)
231 .StoreNamedProperty(reg, wide_name, 0, LanguageMode::STRICT)
232 .StoreKeyedProperty(reg, reg, 2056, LanguageMode::STRICT);
230 233
231 // CreateClosureWide 234 // CreateClosureWide
232 Handle<SharedFunctionInfo> shared_info2 = factory->NewSharedFunctionInfo( 235 Handle<SharedFunctionInfo> shared_info2 = factory->NewSharedFunctionInfo(
233 factory->NewStringFromStaticChars("function_b"), MaybeHandle<Code>(), 236 factory->NewStringFromStaticChars("function_b"), MaybeHandle<Code>(),
234 false); 237 false);
235 builder.CreateClosure(shared_info2, NOT_TENURED); 238 builder.CreateClosure(shared_info2, NOT_TENURED);
236 239
237 // Emit wide variant of literal creation operations. 240 // Emit wide variant of literal creation operations.
238 builder.CreateRegExpLiteral(factory->NewStringFromStaticChars("wide_literal"), 241 builder.CreateRegExpLiteral(factory->NewStringFromStaticChars("wide_literal"),
239 0, 0) 242 0, 0)
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
669 iterator.Advance(); 672 iterator.Advance();
670 } 673 }
671 CHECK_EQ(iterator.current_bytecode(), Bytecode::kReturn); 674 CHECK_EQ(iterator.current_bytecode(), Bytecode::kReturn);
672 iterator.Advance(); 675 iterator.Advance();
673 CHECK(iterator.done()); 676 CHECK(iterator.done());
674 } 677 }
675 678
676 } // namespace interpreter 679 } // namespace interpreter
677 } // namespace internal 680 } // namespace internal
678 } // namespace v8 681 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/interpreter/test-interpreter.cc ('k') | test/unittests/interpreter/bytecode-array-iterator-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698