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

Side by Side Diff: runtime/vm/assembler.h

Issue 1192103004: VM: New calling convention for generated code. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: ia32 port, addressed comments Created 5 years, 3 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 | « no previous file | runtime/vm/assembler.cc » ('j') | runtime/vm/assembler_arm.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_ASSEMBLER_H_ 5 #ifndef VM_ASSEMBLER_H_
6 #define VM_ASSEMBLER_H_ 6 #define VM_ASSEMBLER_H_
7 7
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/allocation.h" 9 #include "vm/allocation.h"
10 #include "vm/globals.h" 10 #include "vm/globals.h"
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 280
281 281
282 enum Patchability { 282 enum Patchability {
283 kPatchable, 283 kPatchable,
284 kNotPatchable, 284 kNotPatchable,
285 }; 285 };
286 286
287 287
288 class ObjectPoolWrapper : public ValueObject { 288 class ObjectPoolWrapper : public ValueObject {
289 public: 289 public:
290 intptr_t AddObject(const Object& obj); 290 intptr_t AddObject(const Object& obj,
291 Patchability patchable = kNotPatchable);
291 intptr_t AddImmediate(uword imm); 292 intptr_t AddImmediate(uword imm);
292 intptr_t AddExternalLabel(const ExternalLabel* label, 293 intptr_t AddExternalLabel(const ExternalLabel* label,
293 Patchability patchable); 294 Patchability patchable);
294 295
295 intptr_t FindObject(const Object& obj); 296 intptr_t FindObject(const Object& obj,
297 Patchability patchable = kNotPatchable);
296 intptr_t FindImmediate(uword imm); 298 intptr_t FindImmediate(uword imm);
297 intptr_t FindExternalLabel(const ExternalLabel* label, 299 intptr_t FindExternalLabel(const ExternalLabel* label,
298 Patchability patchable); 300 Patchability patchable);
299 301
300 RawObjectPool* MakeObjectPool(); 302 RawObjectPool* MakeObjectPool();
301 303
302 private: 304 private:
303 intptr_t AddObject(ObjectPool::Entry entry, Patchability patchable); 305 intptr_t AddObject(ObjectPool::Entry entry, Patchability patchable);
304 intptr_t FindObject(ObjectPool::Entry entry, Patchability patchable); 306 intptr_t FindObject(ObjectPool::Entry entry, Patchability patchable);
305 307
306 // Objects and jump targets. 308 // Objects and jump targets.
307 GrowableArray<ObjectPool::Entry> object_pool_; 309 GrowableArray<ObjectPool::Entry> object_pool_;
308 310
309 // Hashmap for fast lookup in object pool. 311 // Hashmap for fast lookup in object pool.
310 DirectChainedHashMap<ObjIndexPair> object_pool_index_table_; 312 DirectChainedHashMap<ObjIndexPair> object_pool_index_table_;
311 }; 313 };
312 314
315
316 enum RestorePP {
317 kRestoreCallerPP,
318 kKeepCalleePP
319 };
320
313 } // namespace dart 321 } // namespace dart
314 322
315 323
316 #if defined(TARGET_ARCH_IA32) 324 #if defined(TARGET_ARCH_IA32)
317 #include "vm/assembler_ia32.h" 325 #include "vm/assembler_ia32.h"
318 #elif defined(TARGET_ARCH_X64) 326 #elif defined(TARGET_ARCH_X64)
319 #include "vm/assembler_x64.h" 327 #include "vm/assembler_x64.h"
320 #elif defined(TARGET_ARCH_ARM) 328 #elif defined(TARGET_ARCH_ARM)
321 #include "vm/assembler_arm.h" 329 #include "vm/assembler_arm.h"
322 #elif defined(TARGET_ARCH_ARM64) 330 #elif defined(TARGET_ARCH_ARM64)
323 #include "vm/assembler_arm64.h" 331 #include "vm/assembler_arm64.h"
324 #elif defined(TARGET_ARCH_MIPS) 332 #elif defined(TARGET_ARCH_MIPS)
325 #include "vm/assembler_mips.h" 333 #include "vm/assembler_mips.h"
326 #else 334 #else
327 #error Unknown architecture. 335 #error Unknown architecture.
328 #endif 336 #endif
329 337
330 #endif // VM_ASSEMBLER_H_ 338 #endif // VM_ASSEMBLER_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/assembler.cc » ('j') | runtime/vm/assembler_arm.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698