Changeset 38857 in webkit for trunk/JavaScriptCore/assembler/MacroAssembler.h
- Timestamp:
- Dec 1, 2008, 1:18:36 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/assembler/MacroAssembler.h
r38854 r38857 255 255 // object). 256 256 257 void addPtr(Imm32 imm, RegisterID dest) 258 { 259 #if PLATFORM(X86_64) 260 if (CAN_SIGN_EXTEND_8_32(imm.m_value)) 261 m_assembler.addq_i8r(imm.m_value, dest); 262 else 263 m_assembler.addq_i32r(imm.m_value, dest); 264 #else 265 if (CAN_SIGN_EXTEND_8_32(imm.m_value)) 266 m_assembler.addl_i8r(imm.m_value, dest); 267 else 268 m_assembler.addl_i32r(imm.m_value, dest); 269 #endif 270 } 271 257 272 void add32(Imm32 imm, RegisterID dest) 258 273 { … … 296 311 void loadPtr(ImplicitAddress address, RegisterID dest) 297 312 { 313 #if PLATFORM(X86_64) 314 if (address.offset) 315 m_assembler.movq_mr(address.offset, address.base, dest); 316 else 317 m_assembler.movq_mr(address.base, dest); 318 #else 298 319 if (address.offset) 299 320 m_assembler.movl_mr(address.offset, address.base, dest); 300 321 else 301 322 m_assembler.movl_mr(address.base, dest); 323 #endif 302 324 } 303 325 … … 320 342 void storePtr(RegisterID src, ImplicitAddress address) 321 343 { 344 #if PLATFORM(X86_64) 345 if (address.offset) 346 m_assembler.movq_rm(src, address.offset, address.base); 347 else 348 m_assembler.movq_rm(src, address.base); 349 #else 322 350 if (address.offset) 323 351 m_assembler.movl_rm(src, address.offset, address.base); 324 352 else 325 353 m_assembler.movl_rm(src, address.base); 354 #endif 326 355 } 327 356 … … 351 380 void pop(RegisterID dest) 352 381 { 382 #if PLATFORM(X86_64) 383 m_assembler.popq_r(dest); 384 #else 353 385 m_assembler.popl_r(dest); 386 #endif 354 387 } 355 388 356 389 void push(RegisterID src) 357 390 { 391 #if PLATFORM(X86_64) 392 m_assembler.pushq_r(src); 393 #else 358 394 m_assembler.pushl_r(src); 395 #endif 359 396 } 360 397 361 398 void pop() 362 399 { 363 m_assembler.addl_i8r(sizeof(void*), X86::esp);400 addPtr(Imm32(sizeof(void*)), X86::esp); 364 401 } 365 402 … … 381 418 void move(Imm32 imm, RegisterID dest) 382 419 { 420 // Note: on 64-bit the Imm32 value is zero extended into the register, it 421 // may be useful to have a separate version that sign extends the value? 383 422 if (!imm.m_value) 384 423 m_assembler.xorl_rr(dest, dest); 385 424 else 386 425 m_assembler.movl_i32r(imm.m_value, dest); 426 } 427 428 void move(RegisterID src, RegisterID dest) 429 { 430 // Note: on 64-bit this is is a full register move; perhaps it would be 431 // useful to have separate move32 & movePtr, with move32 zero extending? 432 #if PLATFORM(X86_64) 433 m_assembler.movq_rr(src, dest); 434 #else 435 m_assembler.movl_rr(src, dest); 436 #endif 387 437 } 388 438
Note:
See TracChangeset
for help on using the changeset viewer.