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

Side by Side Diff: src/compiler/js-operator.h

Issue 1168093002: [strong] Implement strong mode restrictions on property access (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase Created 5 years, 6 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/js-generic-lowering.cc ('k') | src/compiler/js-operator.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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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_JS_OPERATOR_H_ 5 #ifndef V8_COMPILER_JS_OPERATOR_H_
6 #define V8_COMPILER_JS_OPERATOR_H_ 6 #define V8_COMPILER_JS_OPERATOR_H_
7 7
8 #include "src/runtime/runtime.h" 8 #include "src/runtime/runtime.h"
9 #include "src/unique.h" 9 #include "src/unique.h"
10 10
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 216
217 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); 217 DynamicContextAccess const& DynamicContextAccessOf(Operator const*);
218 218
219 219
220 // Defines the property being loaded from an object by a named load. This is 220 // Defines the property being loaded from an object by a named load. This is
221 // used as a parameter by JSLoadNamed operators. 221 // used as a parameter by JSLoadNamed operators.
222 class LoadNamedParameters final { 222 class LoadNamedParameters final {
223 public: 223 public:
224 LoadNamedParameters(const Unique<Name>& name, 224 LoadNamedParameters(const Unique<Name>& name,
225 const ResolvedFeedbackSlot& feedback, 225 const ResolvedFeedbackSlot& feedback,
226 LanguageMode language_mode,
226 ContextualMode contextual_mode) 227 ContextualMode contextual_mode)
227 : name_(name), feedback_(feedback), contextual_mode_(contextual_mode) {} 228 : name_(name),
229 feedback_(feedback),
230 language_mode_(language_mode),
231 contextual_mode_(contextual_mode) {}
228 232
229 const Unique<Name>& name() const { return name_; } 233 const Unique<Name>& name() const { return name_; }
234 LanguageMode language_mode() const { return language_mode_; }
230 ContextualMode contextual_mode() const { return contextual_mode_; } 235 ContextualMode contextual_mode() const { return contextual_mode_; }
231 236
232 const ResolvedFeedbackSlot& feedback() const { return feedback_; } 237 const ResolvedFeedbackSlot& feedback() const { return feedback_; }
233 238
234 private: 239 private:
235 const Unique<Name> name_; 240 const Unique<Name> name_;
236 const ResolvedFeedbackSlot feedback_; 241 const ResolvedFeedbackSlot feedback_;
242 const LanguageMode language_mode_;
237 const ContextualMode contextual_mode_; 243 const ContextualMode contextual_mode_;
238 }; 244 };
239 245
240 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); 246 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&);
241 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); 247 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&);
242 248
243 size_t hash_value(LoadNamedParameters const&); 249 size_t hash_value(LoadNamedParameters const&);
244 250
245 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); 251 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&);
246 252
247 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); 253 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op);
248 254
249 255
250 // Defines the property being loaded from an object. This is 256 // Defines the property being loaded from an object. This is
251 // used as a parameter by JSLoadProperty operators. 257 // used as a parameter by JSLoadProperty operators.
252 class LoadPropertyParameters final { 258 class LoadPropertyParameters final {
253 public: 259 public:
254 explicit LoadPropertyParameters(const ResolvedFeedbackSlot& feedback) 260 explicit LoadPropertyParameters(const ResolvedFeedbackSlot& feedback,
255 : feedback_(feedback) {} 261 LanguageMode language_mode)
262 : feedback_(feedback), language_mode_(language_mode) {}
256 263
257 const ResolvedFeedbackSlot& feedback() const { return feedback_; } 264 const ResolvedFeedbackSlot& feedback() const { return feedback_; }
258 265
266 LanguageMode language_mode() const { return language_mode_; }
267
259 private: 268 private:
260 const ResolvedFeedbackSlot feedback_; 269 const ResolvedFeedbackSlot feedback_;
270 const LanguageMode language_mode_;
261 }; 271 };
262 272
263 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&); 273 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&);
264 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); 274 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&);
265 275
266 size_t hash_value(LoadPropertyParameters const&); 276 size_t hash_value(LoadPropertyParameters const&);
267 277
268 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); 278 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&);
269 279
270 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); 280 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 PretenureFlag pretenure); 371 PretenureFlag pretenure);
362 const Operator* CreateLiteralArray(int literal_flags); 372 const Operator* CreateLiteralArray(int literal_flags);
363 const Operator* CreateLiteralObject(int literal_flags); 373 const Operator* CreateLiteralObject(int literal_flags);
364 374
365 const Operator* CallFunction(size_t arity, CallFunctionFlags flags, 375 const Operator* CallFunction(size_t arity, CallFunctionFlags flags,
366 LanguageMode language_mode); 376 LanguageMode language_mode);
367 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); 377 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity);
368 378
369 const Operator* CallConstruct(int arguments); 379 const Operator* CallConstruct(int arguments);
370 380
371 const Operator* LoadProperty(const ResolvedFeedbackSlot& feedback); 381 const Operator* LoadProperty(const ResolvedFeedbackSlot& feedback,
382 LanguageMode language_mode);
372 const Operator* LoadNamed(const Unique<Name>& name, 383 const Operator* LoadNamed(const Unique<Name>& name,
373 const ResolvedFeedbackSlot& feedback, 384 const ResolvedFeedbackSlot& feedback,
385 LanguageMode language_mode,
374 ContextualMode contextual_mode = NOT_CONTEXTUAL); 386 ContextualMode contextual_mode = NOT_CONTEXTUAL);
375 387
376 const Operator* StoreProperty(LanguageMode language_mode); 388 const Operator* StoreProperty(LanguageMode language_mode);
377 const Operator* StoreNamed(LanguageMode language_mode, 389 const Operator* StoreNamed(LanguageMode language_mode,
378 const Unique<Name>& name); 390 const Unique<Name>& name);
379 391
380 const Operator* DeleteProperty(LanguageMode language_mode); 392 const Operator* DeleteProperty(LanguageMode language_mode);
381 393
382 const Operator* HasProperty(); 394 const Operator* HasProperty();
383 395
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 Zone* const zone_; 429 Zone* const zone_;
418 430
419 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); 431 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder);
420 }; 432 };
421 433
422 } // namespace compiler 434 } // namespace compiler
423 } // namespace internal 435 } // namespace internal
424 } // namespace v8 436 } // namespace v8
425 437
426 #endif // V8_COMPILER_JS_OPERATOR_H_ 438 #endif // V8_COMPILER_JS_OPERATOR_H_
OLDNEW
« no previous file with comments | « src/compiler/js-generic-lowering.cc ('k') | src/compiler/js-operator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698